{"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-duplicate.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/vg-licenses/component.js","tt4/pods/settings/general-v2/components/vg-licenses/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","lockedPosition","hasPositionChanged","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","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","isDestroyed","_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","setTimeout","input","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","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","otherRows","duplicates","myValues","otherVal","otherValStrings","vStr","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","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","isDuplicate","duplicateValues","_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","_this$user2","_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$openWorktime3","_this$newWorktime3","positionFromWatch","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","rawList","variation","hideList","visibleWidgets","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","mySitesPromise","findMysites","getEach","getOptionsWithSubheaders","optionsPromise","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","limitWasPassed","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","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","seen","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","VgLicensesComponent","_onStoreEvent","licenses","hasCustomerId","customerId","getCustomerId","getCustomerLicenses","license","hasUsage","usage_amount","usage_tier_cap","percentage","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","reservedData","getBankdeducter","getBankName","getWorkTime","getbanks","_banks","tomorrow","reservedEndDate","summaryMap","sortedNewData","combinedData","fromDate","targetArray","bankf","absencetype_f","hours_raw","absencetype_id","_x6","ar","columnName","queryObj","worktimerows","accountcolumn","bankName","workrow","hoursInAccount","bankrow","_x8","_x9","closeHistoryModal","deleteBank","createNewBank","editBank","saveBank","excelHeaders","exportRows","newExportRows","reMigrateBanks","toggleHideEmptyRows","checkIfAbsenceTypeBelongsToBank","reservedFiltered","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","resetSent","resetSentFailed","anySent","UsersAddIndexController","hasEmail","hasPhone","resetPsw","reset_and_send","psw","email_title","by_email","by_sms","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","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","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","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,oFAiCRF,MAAAwB,SAAS,UAAW,gBAAiB,cAAe;;;AAzBrD,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,GAC1CA,EAAYC,gBAGbhe,EAAKie,mBAAmBF,EAAYC,kBACpChe,EAAKke,kBAAoBle,EAAKke,iBAE9Ble,EAAKme,kBAAoBJ,EAAYC,eAAeI,SACpDpe,EAAKqe,mBAAqBN,EAAYC,eAAeM,cAZ9Bte,iDAkBnC,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,IAAII,eACT5f,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,IAAII,eADlB,CAAAqC,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,wFArG8DolB,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,IAAII,gBAPOhe,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,IAAII,iDAGrC,SAAkB6B,GACW,YAArBA,EAAOsE,WAAyBjpB,KAAK0rB,mBAAmB1rB,KAAK0iB,IAAII,gFAGzE,SAAA/K,EAAiC+T,GAAjC,OAAAjU,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,GAESvY,KAAK0iB,IAAII,eAFlB,CAAAzK,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,gCAGvB,WACmD,IAAAnL,EAAAzjB,KAA9B+uB,EAA8B5uB,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAN,KACnCwK,EAAU,CACZqkB,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,GACG9pB,OAAO+pB,0BACHD,GACA,SAACE,GACGA,EAAUvD,MAAK,SAACA,GACXA,EAAKriB,KAAO,aACRqiB,EAAKlgB,KAAOkgB,EAAKlgB,KAAKuC,QACnB,SACA,SAAU,EAAAuQ,EAAAzgB,WAASiS,OAAO,uBAAyB,KAE3DsS,EAAK8M,YAAY,CACbhC,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,EAAAqD,EAAAtY,EAAA/P,EAAA0mB,EAAA4B,EAAAC,EAAAC,EAAAxwB;AAAA,OAAA0X,mBAAAO,MAAA,SAAA6L,GAAA,OAAA,OAAAA,EAAA3L,KAAA2L,EAAA1L,MAAA,KAAA,EAAA,OAAsC4U,EAAtCwD,EAAAzd,OAAA,QAAAwR,IAAAiM,EAAA,IAAAA,EAAA,GACQH,EAAY,oBAAsBzD,EAAKlgB,KAAO,iBAC9C7M,KAAK4wB,WAAUJ,GAAa,gBAC5BrD,IAAaqD,GAAa,eAHlCvM,EAAA3L,KAAA,EAAA2L,EAAA1L,KAAA,EAM0BsY,MAAM7wB,KAAKssB,QAAUkE,EAAW,CAC9CjwB,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,EAAK+D,OAAO3oB,EAASrH,IAAM,CACpCG,KAAMkH,EAAS4oB,UAGf5D,EAjBZ,CAAAlJ,EAAA1L,KAAA;AAAA,MAAA,OAkBYvY,KAAKgxB,YAAYjE,EAAKlgB,KAAMkgB,EAAKriB,KAAMqiB,EAAKwB,KAAMpmB,GAlB9D8b,EAAA1L,KAAA,GAmBoCwU,EAAKkE;AAnBzC,KAAA,GAmBkBR,EAnBlBxM,EAAAjL,KAoBYhZ,KAAKqtB,iBAAiBllB,EAAS+oB,QAAUT,EApBrDxM,EAAA1L,KAAA;AAAA;AAAA,KAAA,GAAA,OAAA0L,EAAA1L,KAAA,GAsBoCwU,EAAKkE;AAtBzC,KAAA,GAsBkBR,EAtBlBxM,EAAAjL,KAuBYhZ,KAAK0tB,YAAYvlB,EAAS+oB,QAAUT;AAvBhD,KAAA,GAAA,OAAAxM,EAAA1L,KAAA,GA0BcsW;AA1Bd,KAAA,GA2BQ9B,EAAK8B,KAAOA,EACZ9B,EAAKG,WAAa/kB,EAAS+oB,OAE3BlxB,KAAKmxB,QAAQpE,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,EACI6N,EACA1mB,EACA6jB,EACA8C,GAJJ,IAAAC,EAAAvD;AAAA,OAAAlW,mBAAAO,MAAA,SAAAsL,GAAA,OAAA,OAAAA,EAAApL,KAAAoL,EAAAnL,MAAA,KAAA,EAAA,OAAAmL,EAAAnL,KAAA,GAM0B,EAAAiV,EAAAc,aAAYC;AANtC,KAAA,EAAA,OAMU+C,EANV5N,EAAA1K,MAOU+U,EAAmBS,EAAAA,QAAKC,YAAY6C,IACzBzkB,KAAOukB,EACxBrD,EAAiBrjB,KAAOA,EACxBqjB,EAAiB+C,OAAOO,EAAeE,MAAMzwB,IAAK,CAC9CG,KAAMowB,EAAeE,MAAMR,SAXnCrN,EAAAlL,OAAA,SAaWuV;AAbX,KAAA,EAAA,IAAA,MAAA,OAAArK,EAAAtK,UAAAmK,oFAgBA,SAAoB7Y,GAChB,OAAO8mB,EAAAA,WAAW1vB,SAAS4I,sCAtPgBsR,EAAAA,6eAaN,gHACL;0CAdnBmQ;;;;;;;;;;;;;;ACrErB,IAAMhQ,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,20BAAAzZ,KAAA,CAAA0Z,WAAA,2CAUPkV;;;yFACjB,WACI,OAAO,EAAA1J,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,MAAO4f,WAAW1xB,KAAKod,KAAKre,OAAS,EAAK;AAC/D,OAAOsO,EAAU,GAAK,IAAMA,EAAQxC,WAAawC,EAAQxC,8CA/DTmR,EAAAA;0CAAvCyV;;;;;;;;;;;;ACVrB,IAAMtV,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,iDAuBPoV,uHAuCnBpyB,MAAAwB,SAAS,UAAW,cAAe;;;AA7BpC,SAAA4wB,EAAY3Z,EAAYoF,GAA6B,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAA2xB,GAAAnT,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,EAAK8sB,uBAF+C9sB,oCAKrD,WAAc,IAAA+sB;AACb,OAAO,QAAAA,EAAA7xB,KAAKod,KAAKzS,eAAV,IAAAknB,OAAA,EAAAA,EAAmBtuB,OAAQ,8BAGnC,WAAoB,IAAAuuB;AACnB,OAAO,QAAAA,EAAA9xB,KAAKod,KAAKzS,eAAV,IAAAmnB,OAAA,EAAAA,EAAmB3X,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,KAAK+xB,SAAShzB,EAAM,IAC/DA,EAAQiB,KAAKgyB,yCAGrC,WACC,OAAO,yBAKR,WAEC,OAAOhyB,KAAKiyB,aAAa,MAAMhtB,KAAKjF,KAAKkyB,aAAaC,KAAKnyB,+BAG5D,SAASiW,GACR,MAAuB,WAAhBzT,EAAOyT,IAAqBA,GAAQ,OAAQA,8BAIpD,SAAaoR,GACZ,GAAKA,MAAAA,IAAAA,EAAS5C,QAAS,MAAO;AAE9B,IAAM2N,EAAa/K,EAAQ5C,UACrB4N,EAAcryB,KAAKgyB,iBAAiBM,MAAM,MAE1CC,EAAWH,EAAWjO,QAAO,SAAC1D,GAAD,OAAiB4R,EAAYvwB,SAAS2e,EAAO9c,OAC1E6uB,EAAaJ,EAAWjO,QAAO,SAAC1D,GAAD,OAAkB4R,EAAYvwB,SAAS2e,EAAO9c,OAE7E8uB,EAAS;AASf,GAPIlzB,MAAA+gB,UAAUiS,IACbE,EAAOvnB,KAAK,CACXsZ,UAAWxkB,KAAKL,KAAK2C,EAAE,mBACvBqI,QAAS4nB,IAIPhzB,MAAA+gB,UAAUkS,GAAa,CAE1B,IAAME,EAAkB,CACvB/uB,GAAI,iBACJgvB,aAAa,EACb7Q,KAAM9hB,KAAKL,KAAK2C,EAAE;AAGnBmwB,EAAOvnB,KAAK,CACXsZ,UAAWxkB,KAAKL,KAAK2C,EAAE,qBACvBqI,QAAO,CAAG+nB,GAAH9xB,OAAAgyB,EAAuBJ,MAIhC,OAAOC,mCAGR,WAAwE,IAAA5b,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,KAAK6yB,WACZvL,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,IAAMisB,GAAejc,EAAKuG,KAAK+G,QAAU,IAAItd;AACzCtH,MAAA+gB,UAAUwS,KACbnO,EAAO9d,GAA8B,iBAAhBisB,EAA2BA,EAAcvzB,MAAAN,IAAI6zB,EAAa,UAK3EnO,mCAIR,SAAkB5lB,GACjB,GAAIQ,MAAAwzB,QAAQh0B,GAAQ,OAAO;AAE3B,GAAI6C,MAAMkB,QAAQ/D,GAAQ,CACzB,IAAM2e,EAAM3e,EAAM8iB,KAAI,SAACmR,GAAD,OAAOlZ,OAAOkZ,GAAK,OAAK7O,OAAlC5kB,MAAA+gB;AACZ,OAAO5C,EAAIxK,OAASwK,EAAIC,KAAK,KAAO,KAGrC,MAAqB,iBAAV5e,EACHQ,MAAAwzB,QAAQh0B,EAAMk0B,QAAU,KAAOl0B,EAGhC,+DAGR,SAAAgZ,EAAmByL,GAAnB,IAAA0P,EAAA7L,EAAA8L;AAAA,OAAAtb,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,KAMOma,EAAY9L,MAAAA,GANnB,QAAA6L,EAMmB7L,EAASxkB,YAN5B,IAAAqwB,OAAA,EAMmBA,EAAeha,MACjClZ,KAAKozB,UACJD,EAAYnzB,KAAK6yB,WACdM,EAAYnzB,KAAK6yB,WACjB,KACJ7yB,KAAKyhB,UAAW,EAXjBpJ,EAAAG,OAAA,SAaQ6O;AAbR,KAAA,EAAA,IAAA,MAAA,OAAAhP,EAAAe,UAAArB,EAAA/X,wHAgBA,SAAA8jB,IAAA,IAAA/kB,EAAAs0B,EAAAhM;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,KAAK+xB,SAAShzB,EAAM,KAJrE,CAAAklB,EAAA1L,KAAA;AAAA,MAAA,OAKEvY,KAAKgyB,iBAAmBzyB,MAAAktB,EAAE1tB,GAL5BklB,EAAAzL,OAAA;AAAA,KAAA,EAAA,GAUO6a,EAAYrzB,KAAKszB,kBAAkBv0B,IACrCQ,MAAAwzB,QAAQM,GAXb,CAAApP,EAAA1L,KAAA;AAAA,MAAA,OAYEvY,KAAKgyB,iBAAmBzyB,MAAAktB,EAAE,IAZ5BxI,EAAAzL,OAAA;AAAA,KAAA,EAAA,OAAAyL,EAAA3L,KAAA,EAAA2L,EAAA1L,KAAA,GAiBwBvY,KAAKkN,MAAM7J,MAAMrD,KAAKkmB,QAASlmB,KAAK6nB,kBAAkB,KAAMwL;AAjBpF,KAAA,GAiBQhM,EAjBRpD,EAAAjL,KAkBEhZ,KAAKgyB,iBAAmBzyB,MAAAktB,EAAEpF,MAAAA,GAAAA,EAAS5C,QAAU4C,EAAQ5C,UAAY4C,GAlBnEpD,EAAA1L,KAAA;AAAA;AAAA,KAAA,GAAA0L,EAAA3L,KAAA,GAAA2L,EAAAjK,GAAAiK,EAAA,MAAA,GAoBEjkB,KAAKgyB,iBAAmBzyB,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,KAAKiyB,aAAazO;AADzC,KAAA,EACO6D,EADP3D,EAAA1K,KAECtT,EAAQ1F,KAAKkyB,aAAa7K;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,KAAKiyB,aAAa;AADzC,KAAA,EAAA,OACO5K,EADPlC,EAAAnM,KAAAmM,EAAA3M,OAAA,SAEQ6O,EAAQ5C,QAAU4C,EAAQ5C,UAAY4C;AAF9C,KAAA,EAAA,IAAA,MAAA,OAAAlC,EAAA/L,UAAA6L,EAAAjlB,2GAKA,SAAAmoB,EACeppB,GADf,IAAAw0B,EAAA7V,EAAAld;AAAA,OAAAqX,mBAAAO,MAAA,SAAAgQ,GAAA,OAAA,OAAAA,EAAA9P,KAAA8P,EAAA7P,MAAA,KAAA,EAAA,IAGsB3W,MAAMkB,QAAQ/D,KAAUA,EAAMy0B,MAAK,SAACvd,GAAD,OAAeA,EAAK0c,eAH7E,CAAAvK,EAAA7P,KAAA;AAAA,MAAA,OAAA6P,EAAA7P,KAAA,EAKgBvY,KAAKyzB;AALrB,KAAA,EAKE10B,EALFqpB,EAAApP;AAAA,KAAA,EAAA,OASOua,EAAkB3xB,MAAMkB,QAAQ/D,GACnCA,EAAMolB,QAAO,SAAClO,GAAD,OAAgBA,EAAK0c,eAClC,GACH3yB,KAAKgyB,iBAAmBzyB,MAAAktB,EAAE8G,GAGpB7V,EAAM1d,KAAKgyB,iBAAiBM,MAAM,MAAMnO,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;0CARhBkF;ACvBrB,IAAMxV,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,4CAGPmX;;;gEAA8B1X,EAAAA;0CAA9B0X;;;;;;;;;;;;ACHrB,gBAAMvX,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,mVAAAzZ,KAAA,CAAA0Z,WAAA,8CAOPoX;;;AAGjB,SAAAA,EAAY3b,EAAgBoF,GAAyB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAA2zB,GACjD7uB,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,KADoCqB,EAAA3Z,KAAA,iBAAA4Z,IAAAD,EAAA3Z,4JAGjDA,EAAK8uB,eAAexW,EAAKre,MAAMmU,OAAS,GAAoB,YAAfkK,EAAKre,OAHD+F,YAHJkX,EAAAA,yHAChB;0CADhB2X;;;;;;;;;;;;;ACPrB,gBAAMxX,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,scAAAzZ,KAAA,CAAA0Z,WAAA,2CAIP6E;;;;;;kGAGjB,WACI,MAAsD,OAAlDphB,KAAKJ,QAAQi0B,YAAYC,aAAatmB,QAAyB,IACR,OAAlDxN,KAAKJ,QAAQi0B,YAAYC,aAAatmB,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,+CAcPwX;;;AAKjB,SAAAA,EAAY/b,EAAgBoF,GAAuB,IAAAtY,wGAAAyZ,CAAAve,KAAA+zB,GAAA1hB,EAAAoM,EAC/C3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IADkC,eAJL,MAIK/K,EAAAoM,EAAA3Z,GAAA,cAAA,KAAA2Z,EAAA3Z,KAAA,cAAA4Z,IAAAD,EAAA3Z;AAE/C,IAAMkvB,EAASnU,SAASoU,cAAc;AAFS,OAG/CD,EAAOE,MAAQ,IACfF,EAAOG,UAAY,kCAEnBrvB,EAAKsvB,aAAe,IAAIC,EAAAA,QAAaL,GACrClvB,EAAKkvB,OAASA,EAPiClvB,yCAUnD,WAAkC,IAAAwvB;AAE9B,OADA,QAAAA,EAAAt0B,KAAKo0B,oBAAL,IAAAE,GAAAA,EAAmBC,QACdv0B,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,IAAA0zB;AACpB,QAAAA,EAAAx0B,KAAKo0B,oBAAL,IAAAI,GAAAA,EAAmBD,4BAGvB,WAEQv0B,KAAKo0B,aAAcxhB,UAAW5S,KAAKod,KAAKiF,SAAS,MAChDriB,KAAKod,KAAKiF,SAASriB,KAAKo0B,aAAcK,aAC3Cz0B,KAAK00B,WAAY,qCAjC6B1Y,EAAAA,kHAGV;0CAHvB+X;;;;;;;;;;;;;;ACdrB,IAAM5X,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,osCAAAzZ,KAAA,CAAA0Z,WAAA,+CAyBPoY;;;AAMjB,SAAAA,EAAY3c,EAAgBoF,GAAiB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAA20B,GAAAnW,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,SAAwB+nB,GACpB,OAAO50B,KAAKod,KAAKiF,SAASuS,yBAG9B,SAAsBC,GAClBt1B,MAAAkD,IAAA8jB,SAASvmB,KAAMA,KAAK80B,aAAcD,EAAK,qCAG3C,SAAgCnpB,GAC5B1L,KAAK40B,KAAKG,SAASrpB,GACnB1L,KAAKod,KAAKiF,SAASriB,KAAK40B,kCAG5B,SAA4BI,GACE,KAAtBA,GACJz1B,MAAAkD,IAAA8jB,SAASvmB,KAAMA,KAAKi1B,aAAcD,EAAmB,iCAGzD,SAAuBH,GACnB,IAAMK,EAAS,CACXC,QAASN,EACTlzB,QAAQ,EAAAyzB,EAAAC,eAAcR;AAE1B70B,KAAKs1B,cAAe,EACpBt1B,KAAK40B,KAAKlG,WAAWwG,GACrBl1B,KAAKqiB,SAASriB,KAAK40B,8DAGvB,SAAA7c,EAA2Bid,GAA3B,IAAA3xB,EAAAwT,EAAA7W;AAAA,OAAA6X,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,GACIvY,KAAKs1B,cAAe,EACft1B,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,EAAGkQ;AAJzD,KAAA,EAIU3xB,EAJVgV,EAAAW,KAKIhZ,KAAKs1B,cAAe,EACpBjyB,EAAMuD,SAAQ,SAAC2uB,GACPA,EAAO1e,EAAKrT,QACZqT,EAAKlM,QAAQ+jB,WAAW6G,EAAO1e,EAAKrT;AARhD,KAAA,EAAA,IAAA,MAAA,OAAA6U,EAAAe,UAAArB,EAAA/X;;sKAlDiDgc,EAAAA,qHACT,yGACYzc,MAAAktB,EAAE,8GACNltB,MAAAktB,EAAE;0CAHjCkI,MC1BrBj2B,OAAA,+CAAA,CAAA,UAAA,yCAAA,SAAAC,EAAA62B,GAGA32B,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAu2B,EAAAt2B;;;;;;;;;;;;;;ACRA,IAAMid,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+XAAAzZ,KAAA,CAAA0Z,WAAA,8CAKPkZ;;;;;;+DACe,2CAMhC,WACI,OAAOz1B,KAAK01B,kBALhB,SAAgBC,GACZ31B,KAAK01B,aAAeC,iCAOxB,WAC4B,IAAA9e,EAAA7W;AACxBT,MAAAkD,IAAA8jB,SAASvmB,MAAM,WAAA,OAAO6W,EAAK+e,aAAc,IAAO,kCAGpD,WAEQ51B,KAAK41B,cACL51B,KAAK41B,aAAc,EAClB/V,SAASgW,cAA8BC,2CApBC9Z,EAAAA;0CAAhCyZ;;;;;;;;;;;;;;ACLrB,IAAMtZ,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,iYAAAzZ,KAAA,CAAA0Z,WAAA,6CAcPwZ;;;;;;+DACe,2CAMhC,WACI,OAAO/1B,KAAK01B,kBALhB,SAAgBC,GACZ31B,KAAK01B,aAAeC,iCAOxB,WAC4B,IAAA9e,EAAA7W;AACxBT,MAAAkD,IAAA8jB,SACIvmB,MACA,WACI6W,EAAK+e,aAAc,IAEvB,kCAIR,WAEQ51B,KAAK41B,cACL51B,KAAK41B,aAAc,EAClB/V,SAASgW,cAA8BC,2CA1BA9Z,EAAAA;0CAA/B+Z;;;;;;;;;;;;;;ACdrB,IAAM5Z,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+mBAAAzZ,KAAA,CAAA0Z,WAAA,0CAcPyZ;;;yFACjB,kCAKA,SACiBj3B,GACbiB,KAAKod,KAAKiF,SAASriB,KAAKi2B,eAAel3B,0BAG3C,WACI,OAAO,EAAAgpB,EAAAC,0CAYX,SAAuBkO,GACnB,IAAIhlB,EACAilB;AAEJ,GAAID,EAAIp0B,SAAS,KAAM,CACnB,IAAMs0B,EAAWF,EAAIzmB,MAAM;AAC3B0mB,EAAO7kB,SAAS8kB,EAAS,GAAI,IAC7BllB,EAAQI,SAAS8kB,EAAS,GAAI,SAC3B,GAAIF,EAAIp0B,SAAS,KAAM,CAC1B,IAAMs0B,EAAWF,EAAIzmB,MAAM;AAC3B0mB,EAAO7kB,SAAS8kB,EAAS,GAAI,IAC7BllB,EAAQI,SAAS8kB,EAAS,GAAI,SAC3B,GAAIF,EAAIhjB,QAAU,EACrBijB,EAAO7kB,SAAS4kB,EAAI1iB,UAAU0iB,EAAIhjB,OAAS,EAAGgjB,EAAIhjB,QAAS,IAC3DhC,EAAQI,SAAS4kB,EAAI1iB,UAAU,EAAG0iB,EAAIhjB,OAAS,GAAI;IAChD,CAAA,GAAY,KAARgjB,EACP,MAAO;AAEPhlB,EAAQI,SAAS4kB,EAAK,IACtBC,EAAO,EAcX,OAXIpiB,MAAM7C,KAAQA,EAAQ,GACtB6C,MAAMoiB,KAAOA,EAAO,GAEpBjlB,EAAQ,IAAGA,IAAU,GACrBA,EAAQ,KAAIA,EAAQ,IACpBilB,EAAO,IAAGA,EAAO,GACjBA,EAAO,KAAIA,EAAO,IAElBjlB,EAAQ,KAAIA,EAAQ,IAAMA,GAC1BilB,EAAO,KAAIA,EAAO,IAAMA,GAEhBjlB,EAAQ,IAAMilB,qCAzDena,EAAAA;0CAA5Bga;;;;;;;;;;;;;;ACdrB,IAAM7Z,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,moBAAAzZ,KAAA,CAAA0Z,WAAA,oDAMP8Z;;;;;;uDACS,8EAE1B,SAAwBzB,GACpB,OAAO50B,KAAKod,KAAKiF,SAASnf,KAAKC,UAAUyxB,4BAG7C,WACI,IAAIA,EAA6Br1B,MAAAktB,EAAE;AAInC,MAH+B,iBAApBzsB,KAAKod,KAAKre,MAAoB61B,EAAOr1B,MAAAktB,EAAEvpB,KAAKwD,MAAM1G,KAAKod,KAAKre,QAC9DiB,KAAKod,KAAKre,QAAO61B,EAAOr1B,MAAAktB,EAAEzsB,KAAKod,KAAKre,QAC7CiB,KAAK40B,KAAOA,EACLA,uCAGX,SAAwCC,GACpC,IAAMyB,EAAchlB,SAASujB,EAAK;CAC7B9gB,MAAMuiB,IAAgB1e,SAAS0e,IAA+B,KAAfzB,EAAI3hB,SACpDlT,KAAK80B,aAAaD,GACjBhV,SAASC,cAAc,IAAM9f,KAAKu2B,MAAQ,UAA+Bx3B,MAAQ,gCAI1F,SAAuB81B,GACnB70B,KAAK40B,KAAKlG,WAAWmG,GACrB70B,KAAKqiB,SAASriB,KAAK40B,yCAzB+BD,EAAAA;0CAArC0B;;;;;;;;;;;ACNrB,IAAMla,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,2QAAAzZ,KAAA,CAAA0Z,WAAA,8CAEPia;;;gEAAgCxa,EAAAA;0CAAhCwa;;;;;;;;;;;;;;ACFrB,IAAMra,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,yyCAAAzZ,KAAA,CAAA0Z,WAAA,6CAgBPka,sBAIhBl3B,MAAAC,OAAAC,QAAQ;;;AAET,SAAAg3B,EAAYze,EAAgBoF,GAAgB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAAy2B,GAAAjY,EAAAC,EACxC3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IAD2B,iBAAAsB,EAAAD,EAAA3Z,MAAA2Z,EAAA3Z,KAHnB,CAAE2F,KAAM,KAAMisB,OAAQ,MAAOC,QAAS,QAGnB,0GAAAnY,EAAAC,EAAA3Z,GAAA,MAAA6Z,EAAAF,EAAA3Z,IAExCA,EAAK4d,IAAItO,QAF+BtP,uCAK5C,WAAkE,IAAA+R,EAAA7W;AAC9D,IAAqD,IAAjDA,KAAKod,KAAKwZ,mCACV,OAAO52B,KAAKod,KAAKre;AAIrB,GAAIiB,KAAK0iB,IAAII,eAAgB,CACzB9iB,KAAK62B,gBAAiB;AACtB,IAAMC,EAAW92B,KAAK0iB,IAAII;AAE1B,OAAO,IAAI7a,QAAJ,WAAA,MAAAiW,KAAArG,mBAAAC,MAAY,SAAAC,EAAOrS,GAAP,IAAAqxB;AAAA,OAAAlf,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAE,KAAA,GACO,EAAAye,EAAAC,cAAaH,EAAS5T,SAAU4T,EAAS1T;AADhD,KAAA,EACT2T,EADS1e,EAAAW,KAEfnC,EAAKggB,gBAAiB,EACtBhgB,EAAKuG,KAAKiF,SAAS0U,GACnBrxB,EAAQqxB;AAJO,KAAA,EAAA,IAAA,MAAA,OAAA1e,EAAAe,UAAArB;;;AAAZ,OAAA,SAAAsB,GAAA,OAAA6E,EAAAhe,MAAAF,KAAAG,YAAA,IAOP,OAAOH,KAAKod,KAAKre,yCA5BuBid,EAAAA,uHACN;0CADzBya;;;;;;;;;;;AChBrB,IAAMta,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+MAAAzZ,KAAA,CAAA0Z,WAAA,4DAGP2a;;;gEAAqDlb,EAAAA;0CAArDkb;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHrB,IAAM/a,GAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+1FAAAzZ,KAAA,CAAA0Z,WAAA,uCAiFP4a,ySAmBhB53B,MAAAC,OAAAC,QAAQ,0EA2IRF,MAAAwB,SAAS,YAAa,YAAa,UAAW,iBA6M9CxB,MAAAwB,SAAS,qBAAsB,SAAU;;;AAtV1C,SAAAo2B,EAAYnf,EAAgBoF,GAAgB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAAm3B,GAAA3Y,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,OAAAsyB,EAAA3Y,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,qBAAAuyB,EAAA5Y,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,sBAAAwyB,EAAA7Y,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,QAAAyyB,EAAA9Y,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,QAAA0yB,EAAA/Y,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,OAAA2yB,EAAAhZ,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,UAAA4yB,EAAAjZ,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,UAAA6yB,EAAAlZ,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,YAAA8yB,EAAAnZ,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,MAAA+yB,EAAApZ,GAAA3Z,IAExCA,EAAKgzB,+BAFmChzB,yFAK5C,SAAAiT,IAAA,OAAAF,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OACIvY,KAAK+3B,gCADT1f,EAAAE,KAAA,EAEUvY,KAAKg4B;AAFf,KAAA,EAIIz4B,MAAA4C,IAAInC,KAAM,uBAAuB;AAJrC,KAAA,EAAA,IAAA,MAAA,OAAAqY,EAAAe,UAAArB,EAAA/X,gFAOA,YAGSA,KAAKod,KAAK6a,yBAA2Bj4B,KAAKod,KAAKqD,QAAUzgB,KAAKod,KAAKqD,OAAOtJ,MAC3EnX,KAAKod,KAAKqD,OAAOyI,eAEhBlpB,KAAKod,KAAK6a,yBACVj4B,KAAKod,KAAKqD,OAAOtJ,QAClBnX,KAAKod,KAAKqD,OAAO+G,oBAEjBxnB,KAAKod,KAAKqD,OAAOyX,gDAIzB,WAGI,OADAl4B,KAAK+3B,gCACE/3B,KAAKma,OAAOgK,QAAO,SAAC3gB,GAAD,IAAA20B;AAAA,QAAwB30B,EAAM40B,OAAS,QAAAD,EAAC30B,EAAM6K,gBAAP,IAAA8pB,GAACA,EAAgBE,uCAGtF,WACI,OAAOr4B,KAAKma,OAAOgK,QAAO,SAAC3gB,GAAD,IAAA80B;AAAA,OAAA,QAAAA,EAAuB90B,EAAM6K,gBAA7B,IAAAiqB,OAAA,EAAuBA,EAAgBD,iEAGrE,SAAAvU,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,KAAKmb,cAActP,EAAWlqB,EAAOiB,KAAKod,KAAKqD;AAR9D,KAAA,EAAA,OAWIzgB,KAAK2iB,QAAQ6V,oBAAoBvP,EAAWlqB,GAE5CiB,KAAKy4B,aAAaxP,EAAWlqB,GAbjCklB,EAAA1L,KAAA,EAiBWvY,KAAKod,KAAKqD;AAjBrB,KAAA,EAAAwD,EAAAjL,KAiB6B0f,KAAK,eAE1B/1B,OADEA,EAlBV,QAAA6d,EAkBmBxgB,KAAKod,KAAKqD,cAlB7B,IAAAD,OAAA,EAkBmBA,EAAkB7d,SAC7BA,EAAQwf,IAAI8G,IAAclqB,GAAO4D,EAAOiM,OAAOqa,GACnDjpB,KAAK+3B,8BAA8B9O,GACnC1pB,MAAAypB,qBAAqBhpB,KAAM;AArB/B,KAAA,GAAA,IAAA,MAAA,OAAAikB,EAAA7K,UAAA0K,EAAA9jB,mFAwBA,SACmByhB,GACfzhB,KAAK24B,mBAAqBlX,oDAG9B,SAAA8B,IAAA,IAAA9C,EAAAmY,EAAAC,EAAAC;AAAA,OAAAjhB,mBAAAO,MAAA,SAAAsL,GAAA,OAAA,OAAAA,EAAApL,KAAAoL,EAAAnL,MAAA,KAAA,EAAA,OAEUkI,EAASzgB,KAAKod,KAAKqD,OAEzBzgB,KAAK+4B,QAAS,EACd/4B,KAAK2B,MAAQ,KACb3B,KAAKg5B,gBAAkBh5B,KAAKod,KAAKqD,OAAOwY,aAAaC,UACjDN,EAAc54B,KAAKod,KAAKqD,OAAOtJ,MAPvCuM,EAAApL,KAAA,EAAAoL,EAAAnL,KAAA,EAUckI,EAAO7K;AAVrB,KAAA,EAAA,GAYa6K,EAAOhJ,QAZpB,CAAAiM,EAAAnL,KAAA;AAAA,MAAA,OAakBugB,EAAoBjZ,SAASC,cAAc,gBAC1BgZ,EAAkBK,eAAe,CAAEC,SAAU,WAdhF1V,EAAAlL,OAAA,SAeoBxY,KAAK+4B,QAAS;AAflC,KAAA,GAAA,OAAArV,EAAAnL,KAAA,IAkBc,EAAA8gB,EAAAC,aAAY7Y,EAAQzgB;AAlBlC,KAAA,GAqBQ,QAAA64B,EAAI74B,KAAKu5B,UAAUC,kBAAnB,IAAAX,GAAIA,EAA2BY,UAC3Bz5B,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKu5B,UAAUC,WAAf,SACVG,OAAQ,gBACRC,MAAO55B,KAAKod,KAAK7Z,OAIzBvD,KAAK2iB,QAAQkX,WAAW,SAAU75B,KAAKod,KAAK7Z,KAAMkd,IAEtB,IAAxBzgB,KAAKod,KAAK0c,UACN95B,KAAKod,KAAK2c,OAAO/5B,KAAK+5B,MAAM,aAEhC/5B,KAAKg6B,WAAY,EAGQ,oCAAzBh6B,KAAKg5B,gBACDh5B,KAAKod,KAAK6c,UAAUj6B,KAAKod,KAAK6c,SAASj6B,KAAKod,KAAKqD,QAEjDzgB,KAAKod,KAAK8c,WAAWl6B,KAAKod,KAAK8c,UAAUl6B,KAAKod,KAAKqD,QAG3DzgB,KAAK+4B,QAAS,EAEQ,YAAlB/4B,KAAKod,KAAK7Z,MAAsBq1B,GAChC54B,KAAKm6B,QAAQC,iBAAiB,kBA9C1C1W,EAAAnL,KAAA;AAAA;AAAA,KAAA,GAAAmL,EAAApL,KAAA,GAAAoL,EAAA1J,GAAA0J,EAAA,MAAA,GAiDQ1jB,KAAK+4B,QAAS,EACd/4B,KAAK2B,MAAL+hB,EAAA1J;AAlDR,KAAA,GAAA,IAAA,MAAA,OAAA0J,EAAAtK,UAAAmK,EAAAvjB,KAAA,CAAA,CAAA,EAAA,0EAsDA,SACaq6B,GAAsB,IAAAC,EAAAC,EAAAzU;AAEb,cAAduU,GACAr6B,KAAKod,KAAKqD,OAAOyX,qBAGrB,QAAAoC,EAAIt6B,KAAKu5B,UAAUC,kBAAnB,IAAAc,GAAIA,EAA2Bb,UAC3Bz5B,KAAKu5B,UAAUiB,iBAGnB,QAAAD,GAAAzU,EAAA9lB,KAAKod,MAAK2c,aAAV,IAAAQ,GAAAA,EAAAzvB,KAAAgb,EAAkBuU,uBAOtB,WACa,IAAAxjB,EAAA7W,KAELy6B,EADWz6B,KAAKkK,MAAMwe,WAAW1oB,KAAKod,KAAK7Z,MACnB4gB,QAAO,SAAC3gB,GAAsB,IAAAk3B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAUsBC,EAKEC;AAd9E,QAAIrkB,EAAKuG,KAAK+d,OAAStkB,EAAKuG,KAAK+d,KAAK1rB,MAAM,KAAK3N,SAAS0B,EAAMqJ,QAG5D,QAAA6tB,EAAAl3B,EAAM6K,gBAAN,IAAAqsB,IAAAA,EAAgBU,OAAQ77B,MAAAuD,QAAQU,EAAM6K,SAAS+sB,SAE/C,QAAAT,EAAAn3B,EAAM6K,gBAAN,IAAAssB,GAAAA,EAAgBS,MACgB,WAAhC54B,EAAA,QAAAo4B,EAAOp3B,EAAM6K,gBAAb,IAAAusB,OAAA,EAAOA,EAAgBQ,OADvB,QAAAP,EAEAr3B,EAAM6K,gBAFN,IAAAwsB,GAEAA,EAAgBO,KAAKC,UAEjB,CAAC,aAAc,YAAYv5B,SAAS0B,EAAM6K,SAAS+sB,KAAKC,WAEpD,QAAAJ,EAACpkB,EAAKuG,KAAKqD,cAAX,IAAAwa,IAACA,EAAkB9jB,OAGvB,CAAC,cAAe,aAAarV,SAAS0B,EAAM6K,SAAS+sB,KAAKC,YAErD,QAAAH,EAACrkB,EAAKuG,KAAKqD,cAAX,IAAAya,GAACA,EAAkB/jB,MAKhC,QAAA2jB,EAAIt3B,EAAM6K,gBAAV,IAAAysB,GAAIA,EAAgBM,MACpB,QAAAL,EAAIv3B,EAAM6K,gBAAV,IAAA0sB,GAAIA,EAAgBO,WAChB,QAAAN,EAAAx3B,EAAM6K,gBAAN,IAAA2sB,GAAAA,EAAgB1sB,YAAc/O,MAAAuD,QAAQU,EAAM6K,SAASC,aACrD9K,EAAM8K,UAAY9K,EAAM6K,SAASC,WAE9B;AA0BX,OAvBAmsB,EAAiBA,EAAe5Y,KAAI,SAACre,GAAU,IAAA+3B,EAAAC;AAoB3C,MAnBmB,aAAfh4B,EAAMqJ,MAAsC,iBAAfrJ,EAAMqJ,OACnCrJ,EAAMmd,UAAY,eACH,iBAAfnd,EAAMqJ,OAAyBrJ,EAAMmd,UAAY,kBAElC,aAAfnd,EAAMkH,MACkB,aAAxB,QAAA6wB,EAAA/3B,EAAMmH,eAAN,IAAA4wB,OAAA,EAAAA,EAAeh4B,OACfsT,EAAK4kB,kBAAkBj4B,KAEvBA,EAAMmd,UAAY,4BAGhB9J,EAAKuG,KAAKqD,QACV5J,EAAKuG,KAAKqD,OAAOtJ,OADnB,QAAAqkB,EAEAh4B,EAAM6K,gBAFN,IAAAmtB,GAEAA,EAAgBE,eACgB,MAAhC7kB,EAAKuG,KAAKqD,OAAOjd,EAAMqJ,OAEvBgK,EAAKwL,SAAS7e,EAAMqJ,KAAMgK,EAAK8kB,gBAAgBn4B,IAG5CA,KAGPxD,KAAKod,KAAKwe,WAEHnB,EAAejQ,MAAK,SAACqR,EAAGC,GAC3B,OAAID,EAAEhvB,KAAOivB,EAAEjvB,MACH,EAED,KAIR4tB,mCAIf,SAA0Bj3B,GACtB,QAAKxD,KAAK+7B,KAAKx6B,KAAK,mBAEhBvB,KAAKkK,MAAM8xB,YAAY,UAAW,oBAClC,CAAC,WAAY,YAAYl6B,SAAS0B,EAAMD,sCAMhD,SAAwBC,GAAmB,IAAAy4B,EACjCC,EAAY,QAAAD,EAAGz4B,EAAM6K,gBAAT,IAAA4tB,OAAA,EAAGA,EAAgBP;AAErC,GAAmB,SAAfl4B,EAAMkH,KAAiB,CACvB,GAAqB,UAAjBwxB,EACA,OAAO,EAAAvc,EAAAzgB,WAASiS,OAAO;AACpB,GAAqB,cAAjB+qB,EACP,OAAO,EAAAvc,EAAAzgB,WAASqW,SAAS,EAAG,OAAOpE,OAAO,cAGlD,MAA4B,WAAxB3O,EAAO05B,GACAA,EAAan9B,MAGjBm9B,0DAGX,SAAAjX,IAAA,IAAAkX,EAAAC,EAAAC,EAAA5Y,EAAAzjB;AAAA,OAAA6X,mBAAAO,MAAA,SAAA+M,GAAA,OAAA,OAAAA,EAAA7M,KAAA6M,EAAA5M,MAAA,KAAA,EAAA,OACU4jB,EAAWn8B,KAAKs8B,WAAWt8B,KAAKod,KAAK7Z,MACrC64B,EAAe,GAFzBjX,EAAA5M,KAAA,EAGUvY,KAAKod,KAAKqD;AAHpB,KAAA,EAII0b,EAASv1B,SAAQ,SAACqP,GACTmmB,EAAQnmB,EAAKzS,SAAQ44B,EAAQnmB,EAAKzS,OAAS,IAChD44B,EAAQnmB,EAAKzS,OAAOyS,EAAKkO,QAAUV,EAAKrG,KAAKqD,OACvCgD,EAAKrG,KAAKqD,OAAOxK,EAAKsmB,MACtB,QAGJF,EAAqB,GAC3Bx9B,OAAO8H,KAAKy1B,GAASx1B,SAAQ,SAACC,GAC1Bw1B,EAAcx1B,GAAOu1B,EAAQv1B,MAGjCtH,MAAA4C,IAAInC,KAAM,UAAWq8B;AAhBzB,KAAA,EAAA,IAAA,MAAA,OAAAlX,EAAA/L,UAAA6L,EAAAjlB,6EAmBA,WAAiB,IAAAw8B,EAAAx8B;AAiBb,OAhBIA,KAAKod,KAAKgf,SACVv9B,OAAO8H,KAAK3G,KAAKod,KAAKgf,SAASx1B,SAAQ,SAACC,GAEhC21B,EAAKJ,QAAQv1B,GACbtH,MAAA4C,IACIq6B,EAEA,WAAa31B,EACbhI,OAAO49B,OAAOD,EAAKJ,QAAQv1B,GAAM21B,EAAKpf,KAAKgf,QAAQv1B,KAIvDtH,MAAA4C,IAAIq6B,EAAM,WAAa31B,EAAK21B,EAAKpf,KAAKgf,QAAQv1B,OAInD7G,KAAKo8B,oCAgBhB,SAAqB54B,EAAezE,GAAY,IAAA29B,EAAA18B;AACnBA,KAAKs8B,WAAWt8B,KAAKod,KAAK7Z,MAAM4gB,QACrD,SAAClO,GAAD,OAAeA,EAAKsmB,OAAS/4B,KAGhBoD,SAAQ,SAACqP,GACtB,IAAM0mB,EAAQ99B,OAAO49B,OAAO,GAAIC,EAAKN,QAAQnmB,EAAKzS;AAClDm5B,EAAM1mB,EAAKkO,QAAUplB,EAErBQ,MAAA4C,IAAIu6B,EAAM,WAAazmB,EAAKzS,MAAOm5B,gCAW3C,SAAmBp5B,GACf,IAD6Bq5B,EACvBR,EAAU,GADaS,EAAAC,EAEA98B,KAAKkK,MAAMwe,WAAWnlB;AAFtB,IAG7B,IAAAs5B,EAAAhjB,MAAA+iB,EAAAC,EAAAljB,KAAAojB,MAA4B,CAAA,IAAAC,EAAjBx5B,EAAiBo5B,EAAA79B,MACpBgL,EAAM,QAAAizB,EAAGx5B,EAAM6K,gBAAT,IAAA2uB,OAAA,EAAGA,EAAgBjzB;AAC7B,GAAIA,EAAQ,CACHxK,MAAAuD,QAAQiH,KAASA,EAAS,CAACA;AADxB,IAAAkzB,EAAAC,EAAAJ,EAGkB/yB;AAHlB,IAGR,IAAAmzB,EAAArjB,MAAAojB,EAAAC,EAAAvjB,KAAAojB,MAAyC,CAAA,IAAAI,EAA9BC,EAA8BH,EAAAl+B;AACrCq9B,EAAQlxB,KAAK,CAET1H,MAAO45B,EAGPjZ,OAAM,QAAAgZ,EAAE35B,EAAMmH,eAAR,IAAAwyB,OAAA,EAAEA,EAAe55B,KAEvBg5B,KAAM/4B,EAAMqJ,QAXZ,MAAAwwB,GAAAH,EAAA/V,EAAAkW,GAAA,QAAAH,EAAAI,OALa,MAAAD,GAAAR,EAAA1V,EAAAkW,GAAA,QAAAR,EAAAS,IAsB7B,OAAOlB,iCAGX,WACI,OAAOp8B,KAAKma,OAAOgK,QAAO,SAAC3gB,GAAkB,IAAA+5B,EAAAC;AACzC,OACK,QAAAD,EAAA/5B,EAAM6K,gBAAN,IAAAkvB,OAAA,EAAAA,EAAgBnC,OAAQ77B,MAAAuD,QAAQU,EAAM6K,SAAS+sB,QAC/C,QAAAoC,EAAAh6B,EAAM6K,gBAAN,IAAAmvB,OAAA,EAAAA,EAAgBlvB,YAAa/O,MAAAuD,QAAQU,EAAM6K,SAASC,wCAOjE,WAEI,OAAOtO,KAAK24B,oBAAsB34B,KAAKod,KAAKqE,UAAYzhB,KAAK+4B,oDAiBjE,WAA6E,IAAA0E,EAAAz9B,KAAvCwD,EAAuCrD,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,IAAAA,UAAA;AACzEH,KAAK09B,kBAAkB92B,SAAQ,SAACqP,GAAS,IAAA0nB,EAAAC,EAEZC,EAUKC;AAV9B,QAAAH,EAAI1nB,EAAK5H,gBAAT,IAAAsvB,GAAIA,EAAevC,OACf,QAAAyC,EAAC5nB,EAAK5H,gBAAN,IAAAwvB,OAAA,EAACA,EAAezC,MAAcx0B,SAAQ,SAACm3B,GACnC,IAC2DC,EADvDC,EAAYp/B,OAAO8H,KAAKo3B,GAAM,GAAGtuB,MAAM,KAAK,IAC3CjM,GAASy6B,EAAUn8B,SAAS0B,KAAmBA,KAChDyS,EAAKmiB,QAAS,EAAAhD,EAAA8I,WAAUT,EAAKrgB,KAAKqD,OAApB,QAAAud,EAA4B/nB,EAAK5H,gBAAjC,IAAA2vB,OAAA,EAA4BA,EAAe5C,UAMrE,QAAAwC,EAAI3nB,EAAK5H,gBAAT,IAAAuvB,GAAIA,EAAetvB,YACf,QAAAwvB,EAAC7nB,EAAK5H,gBAAN,IAAAyvB,OAAA,EAACA,EAAexvB,WAAmB1H,SAAQ,WAAM,IAAAu3B;AAC7C5+B,MAAA4C,IACI8T,EACA,aACA,EAAAmf,EAAA8I,WAAUT,EAAKrgB,KAAKqD,OAApB,QAAA0d,EAA4BloB,EAAK5H,gBAAjC,IAAA8vB,OAAA,EAA4BA,EAAe7vB,qDAhZrB0N,EAAAA,gHACjB,2GACD,uHACU,gHACG,4GACN,kHACQ,0GAGhB,yHACwB,yHACT;4CAXrBmb;ACjFrB,IAAMhb,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,kDA0BP6hB,kIAchB7+B,MAAAC,OAAAC,QAAQ,0FAIRF,MAAAC,OAAAC,QAAQ;;;AAET,SAAA2+B,EAAYpmB,EAAgBoF,GAA0B,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAAo+B,GAClDt5B,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,QAAAsyB,EAAA3Y,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,YAAAuyB,EAAA5Y,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,OAAAwyB,EAAA7Y,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,YAAAyyB,EAAA9Y,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,eAAA0yB,EAAA/Y,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,YAAA2yB,EAAAhZ,EAAA3Z,IAGlDwB,OAAO+3B,QAAU,SAAC3hB,GACd,GAAK5X,EAAKw5B,kBAAV,CACA,IAAMC,EAAkB7hB,EAAMlX,OAAOg5B;AAEjCD,EAAgBE,SAAS,uBACzBF,EAAgBE,SAAS,kBACzBF,EAAgBE,SAAS,eAG7B35B,EAAKw5B,mBAAoB,KAGzBx5B,EAAKiC,aAAaP,QAAQ1B,EAAKsY,KAAKshB,gBAAkB,qBACtD55B,EAAK65B,aAAe75B,EAAKiC,aAAaP,QAClC1B,EAAKsY,KAAKshB,gBAAkB,oBAjBc55B,iDAsBtD,WACI,OACI9E,KAAK4+B,cAAc1rB,SAClBlT,KAAKod,KAAKyhB,gBACV7+B,KAAKod,KAAK0hB,8CAInB,WACI,OAAO9+B,KAAKod,KAAK7Z,0BAGrB,WAA4B,IAAAsT,EAAA7W,KAClB++B,EAAe,CACjB,OACA,WACA,kBACA,SACA,cACA,qBACA,gBACA,WACA,kBAGArW,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,IAAA20B,EAAAoD;AAClD,SAAKwD,EAAaj9B,SAAS0B,EAAMkH,OACjC,QAAAytB,EAAI30B,EAAM6K,gBAAV,IAAA8pB,GAAIA,EAAgB6G,aACO,aAAvB,QAAAzD,EAAA/3B,EAAMmH,eAAN,IAAA4wB,OAAA,EAAAA,EAAeh4B;AAIvB,IAAI07B,EAAmB;AACnBj/B,KAAKod,KAAK8hB,aACVD,EAAcj/B,KAAKod,KAAK8hB,WAAWp9B,SAAS,KACtC9B,KAAKod,KAAK8hB,WAAWzvB,MAAM,KAC3BzP,KAAKod,KAAK8hB,WAAWzvB,MAAM,MAGrCiZ,EAAW9hB,SAAQ,SAACqP,EAAMvK,GACjBnM,MAAAqT,QAAQqsB,IAAgBA,EAAY,KAAOhpB,EAAKpJ,KAEhD6b,EAAWhd,GAAO3M,MAAQ8X,EAAKsoB,eAAelpB,EAAKpJ,MADpD6b,EAAWhd,GAAO3M,MAAQ8X,EAAKuG,KAAKgiB,OAAOvoB,EAAKuG,KAAK8hB,YAEzDxW,EAAWhd,GAAOkuB,MAAQ/iB,EAAKrV,UAAU2X,wBAAwBtC,EAAKtT,KAAM0S,EAAKpJ,MACjF6b,EAAWhd,GAAO6U,OAAS1J,EAAKlX,KAAK2C,EAAE,cACvComB,EAAWhd,GAAO2zB,UAAYppB,EAAK1S,KAAO,IAAM0S,EAAKpJ,KAErD6b,EAAWhd,GAAO4zB,cAAgBzoB,EAAK0oB,6BAA6BtpB,EAAMyS;AAG9E,IAAM8W,EAAoBx/B,KAAKod,KAAKqiB,WAC9Bz/B,KAAK0/B,qBAAqB1/B,KAAKod,KAAKqiB,YACpC,GAEFE,EAAc,CACdj1B,KAAM,YACNmC,KAAM,IACN+sB,MAAO55B,KAAKL,KAAK2C,EAAE,kBACnBvD,MAAOiB,KAAKod,KAAKgiB,OAAOta,EAAI9kB,KAAKod,KAAKgiB,OAAOta,EAAI,KACjDvhB,KAAM,GACN87B,UAAW,UAGXO,EAAe,CACfl1B,KAAM,UACNmC,KAAM,UACN+sB,MAAO55B,KAAKL,KAAK2C,EAAE,mBACnBvD,MAAOiB,KAAKod,KAAKgiB,OAAOQ,QAAU5/B,KAAKod,KAAKgiB,OAAOQ,QAAU,KAC7Dr8B,KAAMvD,KAAKod,KAAK7Z,KAChB87B,UAAW,WAGXQ,EAAc,CACdn1B,KAAM,kBACNmC,KAAM,kBACN+sB,MAAO55B,KAAKL,KAAK2C,EAAE,kBACnBvD,MAAOiB,KAAKod,KAAKgiB,OAAOU,gBAAkB9/B,KAAKod,KAAKgiB,OAAOU,gBAAkB,KAC7Ev8B,KAAMvD,KAAKod,KAAK7Z,KAChB87B,UAAW,kBACX10B,QAAS,CACL,CAAEhH,GAAI,SAAU5E,MAAOiB,KAAKL,KAAK2C,EAAE,wBACnC,CAAEqB,GAAI,SAAU5E,MAAOiB,KAAKL,KAAK2C,EAAE,2BAEvCie,OAAQvgB,KAAKL,KAAK2C,EAAE;AAExBomB,EAAWxd,KAAK20B;AAEhB,IAAIE,EAAYrX;AAEZ1oB,KAAKod,KAAK4iB,cAEVtX,EAAaA,EAAWvE,QAAO,SAAClO,GAE5B,QAAIY,EAAKuG,KAAK4iB,YAAYvwB,MAAM,KAAK3N,SAASmU,EAAKpJ,QAE/CgK,EAAK8nB,aAAa78B,SAASmU,EAAKpJ,OAChCoJ,EAAKgqB,WAAY,GACV,QAFX,MAOCjgC,KAAKod,KAAK4iB,YAAYvwB,MAAM,KAAK3N,SAAS,OAAM69B,EAAS,MAGzD3/B,KAAKod,KAAK4iB,YAAYvwB,MAAM,KAAK3N,SAAS,aAAY89B,EAAU;AAGzE,IAAMM,EAAYxX,EAAW9nB,OAAO4+B,GAChCW,EAAc,GACdC,EAAwB;AAyB5B,OAxBIpgC,KAAKod,KAAKijB,aAEVH,EAAUt5B,SAAQ,SAACpD,GACf,GAAIA,EAAMy8B,UAAW,OAAQG,EAAiBvpB,EAAKypB,SAAS98B,EAAMqJ,OAASrJ;AAC3E,IAAMkI,EAAQmL,EAAKuG,KAAKijB,YAAYE,WAChC,SAAC3mB,GACG,OAAOA,EAAI/M,OAASrJ,EAAMqJ,MAAQ+M,EAAIrW,OAASC,EAAMD;AAGzDmI,GAAS,EAAGy0B,EAAOz0B,GAASlI,EAC3B28B,EAAOj1B,KAAK1H,MAUzB28B,GAHAA,GAHAA,EAASngC,KAAKwgC,sBAAuBjhC,MAAAqT,QAAQutB,GAAmBD,EAATC,EAAoBR,EAAQC,IAGnEa,YAAYL,IAGZjc,QAAO,SAACnP,GAAD,OAAcA,KAGrChV,KAAK4+B,cAAgBmB,EAAU5b,QAAO,SAAClO,GAAD,OAAgBkqB,EAAOxX,OAAO,OAAQ1S,EAAKpJ,SAC1EszB,8BASX,SACoBO,EAAqB3hC,EAAYyE,IAC5CA,GAAUk9B,KACXA,IAAal9B,EAAQk9B,GACzB1gC,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,kBACtBo2B,OAAQn2B,EACRo2B,MAAO,qBAEP55B,KAAKod,KAAKujB,QAAQ3gC,KAAKod,KAAKujB,OAAO5hC,EAAOyE,GAC1CxD,KAAKod,KAAKwjB,oBACV5gC,KAAKod,KAAKwjB,mBAAmB7hC,EAAOyE,GAExCjE,MAAAypB,qBAAqBhpB,KAAM,wCAG/B,WACsB,IAAAyjB,EAAAzjB;AAClBA,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,kBACtBo2B,OAAQ,gBACRC,MAAO,qBAEP55B,KAAKod,KAAKyjB,cAAc7gC,KAAKod,KAAKyjB,eACtCthC,MAAAypB,qBAAqBhpB,KAAM,WAC3BA,KAAKo8B,QAAQx1B,SAAQ,SAACud,GAClB,IAAMplB,EAAQolB,EAAOplB,MAAQolB,EAAOplB,MAAQ;AACxC0kB,EAAKrG,KAAKwjB,oBAAoBnd,EAAKrG,KAAKwjB,mBAAmB7hC,EAAOolB,EAAOtX,kCAIrF,SACiBsX,GACbnkB,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,4BACtBo2B,OAAQxV,EACRyV,MAAO,qBAEX55B,KAAK2+B,aAAajQ,WAAWvK,EAAOtX,MACpC7M,KAAK+G,aAAaO,QAAQtH,KAAKod,KAAKshB,gBAAkB,kBAAmB1+B,KAAK2+B,cAC9Ep/B,MAAAypB,qBAAqBhpB,KAAM,qCAG/B,SACkBmkB,GACVA,EAAOplB,OAAOiB,KAAK8gC,aAAa,GAAI,KAAM3c,EAAOtX,MACrD7M,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,6BACtBo2B,OAAQxV,EACRyV,MAAO,qBAEX55B,KAAK2+B,aAAatQ,aAAalK,EAAOtX,MACtC7M,KAAK+G,aAAaO,QAAQtH,KAAKod,KAAKshB,gBAAkB,kBAAmB1+B,KAAK2+B,cAC9Ep/B,MAAAypB,qBAAqBhpB,KAAM,+CAO/B,SAA4B0O,GAAa,IAAAkuB,EAAAJ,EAAAx8B,KAC/BiiB,EAAM,GADyB4a,EAAAC,EAEjBpuB,EAAIe,MAAM;AAFO,IAAA,IAAAsxB,EAAA,WAAA,IAG3BC,EAH2BpE,EAAA79B,MAGV0Q,MAAM,KACvBwxB,EAAcD,EAAS9tB,OAAS,EAAI,EAAI,EAExCiH,EAASqiB,EAAKtyB,MAAMwe,WAAWsY,EAAS,IAAI7c,QAAO,SAACmZ,GACtD,OAAOA,EAAEzwB,OAASm0B,EAASC,EAAc;AAE7C,GAAI1hC,MAAAqT,QAAQuH,GAAS,MAAA;AACrBA,EAAO,GAAGyf,MAAQzf,EAAO,GAAG+mB,gBAC5B/mB,EAAO,GAAGgnB,YAAcH,EAASC,GAAe,IAAMD,EAASC,EAAc,GAAK,IAClF9mB,EAAO,GAAGoG,OAASic,EAAK78B,KAAK2C,EAAE,cAC/B6X,EAAO,GAAGklB,UAAYllB,EAAO,GAAG5W,KAAO,IAAM4W,EAAO,GAAGtN,KAEnD2vB,EAAKpf,KAAKgiB,OAAOjlB,EAAO,GAAGgnB,eAC3BhnB,EAAO,GAAGpb,MAAQy9B,EAAKpf,KAAKgiB,OAAOjlB,EAAO,GAAGgnB,cACjDlf,EAAI/W,KAAKiP,EAAO;AAfpB,IAAA0iB,EAAAhjB,MAAA+iB,EAAAC,EAAAljB,KAAAojB,MAAoCgE,IAFC,MAAA1D,GAAAR,EAAA1V,EAAAkW,GAAA,QAAAR,EAAAS,IAoBrC,OAAOrb,uCAGX,SAA8B1S,EAAUowB,EAAmBC,GAGvD,OAFArwB,EAAMowB,EAASpwB,EAAI3O,OAAO,CAAC++B,IAAWpwB,EACtCA,EAAMqwB,EAAUrwB,EAAI3O,OAAO,CAACg/B,IAAYrwB,0BAI5C,SAAiB0Z,GACb,OAAOjpB,KAAK2+B,aAAa4B,WAAU,SAACtqB,GAAD,OAAeA,IAASgT,mCAG/D,SAAuBzlB,GACnB,OAAIxD,KAAKod,KAAKgiB,OAAO57B,GAAexD,KAAKod,KAAKgiB,OAAO57B,GACjDxD,KAAKod,KAAKgiB,OAAO57B,EAAQ,QAAgBxD,KAAKod,KAAKgiB,OAAO57B,EAAQ,QAC7DxD,KAAKod,KAAKgiB,OAAO,qBAAuB57B,EAAQ,KAC9CxD,KAAKod,KAAKgiB,OAAO,qBAAuB57B,EAAQ,KAClDxD,KAAKod,KAAKgiB,OAAO,wBAA0B57B,EAAQ,aACjDxD,KAAKod,KAAKgiB,OAAO,wBAA0B57B,EAAQ,aAClD,iDAQhB,SACIA,EACA44B,GAC6B,IAAAM,EAAA18B,KACzBohC,EAAoD,IACxDhF,EAAUA,EAAQx7B,OACdZ,KAAKod,KAAKqiB,WAAaz/B,KAAK0/B,qBAAqB1/B,KAAKod,KAAKqiB,YAAc,KAErE74B,SAAQ,SAACy6B,GAA4B,IAAAC,EAAAC,EAAAjJ,EAAAoC;AAE7BgC,EAAK8E,UAAUC,mBAAmBJ,EAAYx0B,MACpDgV,KAAI,SAAC6f,GAA4C,IAAAC;AAC/CD,EAAKl+B,QAAUA,EAAMqJ,MACrBu0B,EAAal2B,KAAK,CAAE1H,MAAO69B,EAAald,OAAM,QAAAwd,EAAEN,EAAY12B,eAAd,IAAAg3B,OAAA,EAAEA,EAAqBp+B;AAI7E,IAMgDq+B,EAN1CC,EACFtiC,MAAA+gB,UAAA,QAAAghB,EAAUD,EAAYhzB,gBAAtB,IAAAizB,OAAA,EAAUA,EAAsBv3B,UAChC,QAAAw3B,EAAAF,EAAYhzB,gBAAZ,IAAAkzB,OAAA,EAAAA,EAAsBx3B,SAAUvG,EAAMqJ,KAEpCi1B,EACFviC,MAAA+gB,UAAA,QAAAgY,EAAU90B,EAAM6K,gBAAhB,IAAAiqB,OAAA,EAAUA,EAAgBvuB,UAAW,QAAA2wB,EAAAl3B,EAAM6K,gBAAN,IAAAqsB,OAAA,EAAAA,EAAgB3wB,SAAUs3B,EAAYx0B,MAC3Eg1B,GAAwBC,IACxBV,EAAal2B,KAAK,CAAE1H,MAAO69B,EAAald,OAAM,QAAAyd,EAAEP,EAAY12B,eAAd,IAAAi3B,OAAA,EAAEA,EAAqBr+B;AAI7E,IAAIoH,EAAe;AASnB,OARAy2B,EAAax6B,SAAQ,SAACm7B,GACmB,UAAjCxiC,MAAA6I,OAAO25B,EAAUv+B,MAAMzE,OACvB4L,EAAQo3B,EAAU5d,QAAU4d,EAAUv+B,MAAMzE,MAAQgjC,EAAUv+B,MAAMzE,MAAM4E,GAAK,KAE/EgH,EAAQo3B,EAAU5d,QAAU4d,EAAUv+B,MAAMzE,MAAQgjC,EAAUv+B,MAAMzE,MAAQ,QAI7E4L,qCAhVHqR,EAAAA,8GAKsB,gHACA,gHACK,uHACM,iHACJ,iHACD;0CAXnBoiB;;;;;;;;;;;;;;;;;;;;;;;;;AC1BrB,IAAMjiB,GAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,y0WAAAzZ,KAAA,CAAA0Z,WAAA,0CAmDPylB,gJAOhBziC,MAAAC,OAAAC,QAAQ,iEAGRF,MAAAC,OAAAC,QAAQ,4FAIRF,MAAAC,OAAAC,QAAQ,yBACRF,MAAAC,OAAAC,QAAQ,kRAqFRF,MAAAwB,SAAAkhC,MAAM,6BACN1iC,MAAAwB,SAAAkhC,MAAM;;;AArEP,SAAAD,IAAc,IAAAl9B;AA2BV,GA3BUyZ,GAAAve,KAAAgiC,GAAAxjB,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,QAAAsyB,GAAA3Y,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,aAAAuyB,GAAA5Y,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,SAAAwyB,GAAA7Y,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,YAAAyyB,GAAA9Y,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,YAAA0yB,GAAA/Y,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,sBAAA2yB,GAAAhZ,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,eAAA4yB,GAAAjZ,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,UAAA6yB,GAAAlZ,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,cAAA8yB,GAAAnZ,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,UAAA+yB,GAAApZ,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,YAAAo9B,GAAAzjB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,UAAAq9B,GAAA1jB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,OAAAs9B,GAAA3jB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,UAAAu9B,GAAA5jB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,OAAAw9B,GAAA7jB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,sBAAAy9B,GAAA9jB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,QAAA09B,GAAA/jB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,WAAA29B,GAAAhkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,SAAA49B,GAAAjkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,eAAA69B,GAAAlkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,mBAAA89B,GAAAnkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,uBAAA+9B,GAAApkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,eAAAg+B,GAAArkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,eAAAi+B,GAAAtkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,iBAAAk+B,GAAAvkB,GAAA3Z,IAGVA,EAAK6d,QAAQC,GAAG,aAAhBnE,GAAA3Z,GAAoC,gBACpCA,EAAKm+B,YAAc,GACnBn+B,EAAKo+B,YAAc,EAClBp+B,EAAKq+B,WAAa,+BAAkCr+B,EAAKs+B,aAAe,GACzEt+B,EAAKvB,KAAOuB,EAAKsY,KAAK7Z,KACtBuB,EAAKu+B,YAAcv+B,EAAKsY,KAAKimB,cAAe,EAC5Cv+B,EAAKw+B,gBAAiB/jC,MAAA+gB,UAAUxb,EAAKsY,KAAKkmB,iBAAkBx+B,EAAKsY,KAAKkmB,eACtEx+B,EAAKy+B,YAAcz+B,EAAKsY,KAAKmmB,aAAe,GAC5Cz+B,EAAK06B,kBAAoB16B,EAAKsY,KAAKqiB,YAAc,GACjD36B,EAAK0+B,aAAc,EACnB1+B,EAAK2+B,8BAAgC,GACrC3+B,EAAK4+B,iBAAmB,CACpB,OACA,SACA,QACA,QACA,YACA,kBACA,oBAGJ5+B,EAAK45B,gBAAkB55B,EAAKsY,KAAKshB,gBAAkB55B,EAAKsY,KAAKshB,gBAAkB55B,EAAKvB,KACpFuB,EAAK6+B,YAAc7+B,EAAKiC,aAAaP,QAAQ1B,EAAK45B,gBAAkB,iBAAmB,GAEnF55B,EAAKy+B,YAAa,CAClB,IAAMrD,EAAYp7B,EAAKy+B,YAAY9zB,MAAM,KACnCm0B,EAAc1D,EAAU/b,QAAO,SAACmZ,GAAD,OAAOx4B,EAAKoF,MAAM8xB,YAAYl3B,EAAKvB,KAAM+5B;AAC9Ex4B,EAAK++B,aAAe/+B,EAAKu7B,YAAcuD,EAAY/hB,KAAI,SAACsC,GAAD,OACnDrf,EAAKoF,MAAM1G,MAAMsB,EAAKvB,KAAM4gB,MA/B1B,OAkCVrf,EAAKg/B,oBACLh/B,EAAKi/B,iBAEDj/B,EAAKiC,aAAaP,QAAQ1B,EAAK45B,gBAAkB,qBACjD55B,EAAKk/B,iBACDl/B,EAAKiC,aAAaP,QAAQ1B,EAAK45B,gBAAkB,qBAAqBz9B,OAG1E6D,EAAKm/B,kBACLn/B,EAAKo/B,kBAEAp/B,EAAKq/B,iBACNr/B,EAAKq/B,eAAiBr/B,EAAKsY,KAAK+mB,eAAiBr/B,EAAKsY,KAAK+mB,eAAiB,IAEhFr/B,EAAKs/B,eAGDt/B,EAAKiC,aAAaP,QAAQ1B,EAAK45B,gBAAkB,sBACjD55B,EAAKu/B,kBAAoBv/B,EAAKiC,aAAaP,QACvC1B,EAAK45B,gBAAkB,oBAE3B55B,EAAKw/B,eACDx/B,EAAKy/B,WAAWpgB,QAAO,SAACqgB,GAAD,OACnB1/B,EAAKu/B,kBAAkBI,QAAQh1B,MAAM,KAAK3N,SAAS0iC,EAAIE,qBAzD7D5/B,0CAgEd,WACI9E,KAAK2iB,QAAQgJ,IAAI,aAAc3rB,KAAM,8CAMzC,WACI,OACIA,KAAK2kC,aAAe3kC,KAAKojC,aAAalwB,QACtClT,KAAKojC,aAAalwB,SAAWlT,KAAKiB,KAAKiS,sCAI/C,WACI,OAAOlT,KAAK4kC,iBAAmB5kC,KAAK2kC,aAAe3kC,KAAKojC,aAAalwB,yCAGzE,WACI,OAAOlT,KAAKykC,QAAQ9b,OAAO,gBAAiB,kCAGhD,WACI,IAAMkc,EAAe7kC,KAAKkK,MAAMA,MAAMlK,KAAKod,KAAK7Z,MAAM8K;AAEtD,OAAKw2B,GAAiBA,EAAaC,mBAC5BD,EAAaC,mBAD0C,4BAIlE,WACI,OAAO9kC,KAAK2kC,cAAgB3kC,KAAK+kC,gBAAkB,yBAGvD,WACI,IAAK/kC,KAAK2kC,eAAiB3kC,KAAK+kC,eAAgB,OAAO;AACvD,IAAM7rB,EAAQlZ,KAAK2kC,aAAe3kC,KAAK2kC,aAAe3kC,KAAK+kC;AAC3D,OAAOtzB,KAAKE,KAAKuH,EAAQlZ,KAAKijC,sCAGlC,WACI,IAAIte,EAAS;AAsBb,OApBA3kB,KAAKglC,aAAargB,EAAQ3kB,KAAKod,KAAK+G,QACpCnkB,KAAKglC,aAAargB,EAAQ3kB,KAAKmkC,gBAC3BnkC,KAAKod,KAAK6nB,UACVtgB,EAAS3kB,KAAKklC,iBAAiBvgB,IAE/B3kB,KAAKod,KAAK+nB,aACVtmC,OAAO49B,OAAO9X,EAAQ3kB,KAAKod,KAAK+nB,aAEhCnlC,KAAKod,KAAKgoB,wBAAuBzgB,EAAS3kB,KAAKqlC,uBAAuB1gB,IACtE3kB,KAAKghB,OAAShhB,KAAKghB,MAAM9N,SACrBlT,KAAKod,KAAK6nB,QAAStgB,EAAO6F,KAAOxqB,KAAKslC,2BAA2BtlC,KAAKghB,OACrE2D,EAAO4gB,MAAQvlC,KAAKwlC,iBAAiBxlC,KAAKghB,QAEnD2D,EAAOE,MAAQ7kB,KAAKijC,YACpBte,EAAO2C,OAAStnB,KAAKijC,aAAejjC,KAAKkjC,YAAc,GACvDve,EAAO/G,UAAW,EACd5d,KAAKqjC,cACL1e,EAAOmb,gBAAkB,WAE7B9/B,KAAKylC,4BAA4B9gB,GAC1BA,0BAGX,WAAiB,IAAA9N,EAAA7W,KACP0lC,EAAU1lC,KAAKwhC,UAAUmE,UAAU,CACrC,IAAM3lC,KAAKuD,KAAO,UAClBvD,KAAKuD,KAAO,UAEZkhC,EAAUzkC,KAAKwhC,UAAU9Y,WAAW1oB,KAAKuD,MAAMse,KAAI,SAAC5L,GACpD,IAAM2vB,EAAY/uB,EAAK8sB,YAAYhb,OAAO,YAAa1S,EAAKpJ;AAU5D,OARAoJ,EAAI,QAAcyvB,EAClBzvB,EAAI,UAAgBA,EAAKpJ,KACzBoJ,EAAI,cAAoBA,EAAKpJ,KAGdoJ,EAAI,MAAf2vB,EAA2BrmC,MAAAN,IAAI2mC,EAAW,SACX,WAAd3vB,EAAKpJ,KAAoB,GAAK,GAE5CoJ;AA6BX,OA1BIjW,KAAKod,KAAK4iB,cACVyE,EAAUA,EAAQtgB,QAAO,SAAC0hB,GAAD,OACrBhvB,EAAKuG,KAAK4iB,YAAYvwB,MAAM,KAAK3N,SAAS+jC,EAAOnB,mBAEzDD,EAAUA,EAAQtgB,QACd,SAAC0hB,GAAD,OACIA,EAAOx3B,WAAaw3B,EAAOx3B,SAASy3B,cAAgBD,EAAOx3B,SAASitB,YAGvEt7B,KAAKod,KAAK2oB,mBACXtB,EAAQv5B,KAAK,CACT2B,KAAM,mBACNtJ,KAAMvD,KAAKuD,KACXmhC,cAAe,mBACfsB,UAAW,mBACX9E,gBAAiBlhC,KAAKL,KAAK2C,EAAE,8BAEhCtC,KAAKod,KAAK2oB,mBACXtB,EAAQv5B,KAAK,CACT2B,KAAM,oBACNtJ,KAAMvD,KAAKuD,KACXmhC,cAAe,oBACfsB,UAAW,oBACX9E,gBAAiBlhC,KAAKL,KAAK2C,EAAE,+BAG9BmiC,2BAGX,WAAkB,IAAAhhB,EAAAzjB;AACd,IAAKA,KAAKuD,KAAM,MAAO;AACvB,IAAKvD,KAAKkK,MAAM8xB,YAAYh8B,KAAKuD,KAAM,UAAW,MAAO;AAEzD,IAAIC,EAAQxD,KAAKkK,MAAM1G,MAAMxD,KAAKuD,KAAM,UACpC0iC,EAAe;AAOnB,OAJIA,EADAziC,EAAM6K,SAAS63B,aACA1iC,EAAM6K,SAAS63B,aAAaz2B,MAAM,KAElCjM,EAAMmH,SAGXs7B,EAAapkB,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,KAAKmmC,cACVnmC,KAAKmmC,YAAY7T,MAAM,MAAMxwB,SAAS,aAAe9B,KAAKojC,aAAalwB,mCAGlF,WACI,IAAKlT,KAAKomC,aAAc,OAAO;AAC/B,IAAIC,EAAYrmC,KAAKomC,aAAaztB,YAAYrV;AAC9C,OAAK+iC,EAAUvkC,SAAS,sBAEjB9B,KAAKkK,MAAMA,MAAMlK,KAAKuD,KAAK+iC,cAAcz5B,KADrC7M,KAAKL,KAAK2C,EAAE,mBAAqB+jC,oCAIhD,WAEIrmC,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,oBACtBo2B,OAAQ,mBACRC,MAAO,qBAEXr6B,MAAA4C,IAAInC,KAAM,iBAAkB,MAC5BT,MAAA4C,IAAInC,KAAM,gBAAgB,8DAG9B,SAAA+X,EACmBqnB,GADnB,IAAA/iB,EAAAkqB;AAAA,OAAA1uB,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,GAEIvY,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,oBACtBo2B,OAAQ,gBACRC,MAAO,qBAEPvd,EAAW,KAEXkqB,EAAkB,CAClB15B,KAAMuyB,EAAOvyB,KACbtJ,KAAMvD,KAAKuD,KACXshB,MAAOua,EAAOva,MAAQua,EAAOva,MAAQ,GACrC2hB,KAAMtjC,KAAKC,UAAUi8B,EAAOoH,MAC5B/B,QAASvhC,KAAKC,UAAUi8B,EAAOqF,SAC/BrI,QAASl5B,KAAKC,UAAUi8B,EAAOhD,SAC/BiE,YAAajB,EAAOiB,YAAcjB,EAAOiB,YAAc,GACvDoG,QAASrH,EAAOqH,QAChBC,WAAYtH,EAAOsH,aAGnB1mC,KAAK2mC,eArBb,CAAAtuB,EAAAE,KAAA;AAAA,MAsBQ8D,EAAWrc,KAAKkN,MAAMsZ,WAAW,uBAAwBxmB,KAAK2mC,eAAehjC,IAC7EpE,MAAAqnC,cAAcvqB,EAAUkqB,GACxBlqB,EAASwqB,OAxBjBxuB,EAAAE,KAAA;AAAA;AAAA,KAAA,EAAA,OAAAF,EAAAE,KAAA,GA0ByBvY,KAAKkN,MACjB4b,aAAa,uBAAwByd,GACrCM;AA5Bb,KAAA,GA0BQxqB,EA1BRhE,EAAAW;AAAA,KAAA,GA+BIhZ,KAAK+jC,iBACL/jC,KAAKgkC,iBAAiB3nB;AAhC1B,KAAA,GAAA,IAAA,MAAA,OAAAhE,EAAAe,UAAArB,EAAA/X,wFAmCA,WAEIA,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,oBACtBo2B,OAAQ,sBACRC,MAAO,qBAEX55B,KAAK+G,aAAaI,WAAWnH,KAAK0+B,gBAAkB,qBACpD1+B,KAAK8jC,oBACLvkC,MAAA4C,IAAInC,KAAM,iBAAkBA,KAAKod,KAAK+G,OAASnkB,KAAKod,KAAK+G,OAAS,IAClE5kB,MAAA4C,IAAInC,KAAM,cAAe,IACzBT,MAAA4C,IAAInC,KAAM,cAAeA,KAAKod,KAAKmmB,aACnChkC,MAAA4C,IAAInC,KAAM,oBAAqBA,KAAKod,KAAKqiB,YACzClgC,MAAA4C,IAAInC,KAAM,cAAeA,KAAK6jC,cAC9BtkC,MAAA4C,IAAInC,KAAM,eAAe,GACzBT,MAAAypB,qBAAqBhpB,KAAM,eAC3BA,KAAKokC,eACLpkC,KAAKskC,eAAetkC,KAAKykC,SACzBllC,MAAA4C,IAAInC,KAAM,aAAa,GACvBT,MAAA4C,IAAInC,KAAM,sBAAuB,qEAGrC,SAAA8jB,EACuBzH,GADvB,IAAAyqB,EAAAtK,EAAAx8B;AAAA,OAAA6X,mBAAAO,MAAA,SAAA6L,GAAA,OAAA,OAAAA,EAAA3L,KAAA2L,EAAA1L,MAAA,KAAA,EAAA,OAEIvY,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,oBACtBo2B,OAAQ,oBACRC,MAAO,qBAGPvd,EAAS1Y,IACT3D,KAAK+G,aAAaO,QAAQtH,KAAK0+B,gBAAkB,oBAAqB,CAClEz9B,KAAMob,EACN0qB,QAAS1qB,EAAS1Y,KAX9BsgB,EAAA1L,KAAA,EAcUvY,KAAKgnC,kBAAkB3qB;AAdjC,KAAA,EAeIrc,KAAKokC,eACC0C,EAAkB5jC,KAAKwD,MAAM2V,EAASooB,SAAStgB,QACjD,SAACqgB,GAAD,OACIhI,EAAKtyB,MAAM8xB,YAAYQ,EAAKj5B,KAAMihC,EAAIE,gBACtCF,EAAIwB,UAAUlkC,SAAS,gBAE/B9B,KAAKskC,eAAewC;AArBxB,KAAA,EAAA,IAAA,MAAA,OAAA7iB,EAAA7K,UAAA0K,EAAA9jB,kFAwBA,SACaqc,GACTrc,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,oBACtBo2B,OAAQ,gBACRC,MAAO,qBAEXr6B,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,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,oBACtBo2B,OAAQ,kBACRC,MAAO,qBALflW,EAAAnL,KAAA,EAOsBvY,KAAKN,QAAQunC,QAAQjnC,KAAKL,KAAK2C,EAAE;AAPvD,KAAA,EAAA,IAAAohB,EAAA1K,KAAA,CAAA0K,EAAAnL,KAAA;AAAA,MAAA,OASY8D,EAAS1Y,KAAO3D,KAAKknC,qBAAqBlnC,KAAKmnC,qBAT3DzjB,EAAAnL,KAAA,EAUc8D,EAAS8M;AAVvB,KAAA,EAYInpB,KAAK+jC,iBACLxkC,MAAAypB,qBAAqBhpB,KAAM;AAb/B,KAAA,GAAA,IAAA,MAAA,OAAA0jB,EAAAtK,UAAAmK,EAAAvjB,+GAgBA,SAAAilB,EACiBsN,GADjB,OAAA1a,mBAAAO,MAAA,SAAA+M,GAAA,OAAA,OAAAA,EAAA7M,KAAA6M,EAAA5M,MAAA,KAAA,EAAA,IAEQvY,KAAKonC,gBAFb,CAAAjiB,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,KAAKqnC,cAAc9U;AAR9B,KAAA,EAAA,IAAA,MAAA,OAAApN,EAAA/L,UAAA6L,EAAAjlB,oFAWA,SACeykC,GAAS,IAAA/H,EAAA18B;AACpBT,MAAA4C,IAAInC,KAAM,UAAWykC;AAGrB,IAAM6C,EAAY/nC,MAAAN,IAAIe,KAAM;AAC5BT,MAAA4C,IAAInC,KAAM,OAAQ,MAClBT,MAAAkD,IAAA8V,KAAKvY,MAAM,WAAA,OAAMT,MAAA4C,IAAIu6B,EAAM,OAAQ4K,kCAGvC,SACavoC,EAAOyE,GACZA,IACAjE,MAAA4C,IAAInC,KAAM,cAAe,GACzBT,MAAA4C,IAAInC,KAAM,kBAAoBwD,EAAOzE,GAASA,EAAM4E,GAAK5E,EAAM4E,GAAK5E,GACtD,YAAVyE,GAAqBxD,KAAKunC,cAAcxoC,GAC5CQ,MAAAypB,qBAAqBhpB,KAAM,eAC3BA,KAAKokC,4CAIb,SACa5gC,EAAOzE,GAChBiB,KAAKwnC,SAAShkC,GAASzE,8BAG3B,WAEIQ,MAAA4C,IAAInC,KAAM,cAAe,GACzBA,KAAK8jC,oBACLvkC,MAAA4C,IAAInC,KAAM,aAAa,GACvBT,MAAA4C,IAAInC,KAAM,iBAAkBA,KAAKod,KAAK+G,OAASnkB,KAAKod,KAAK+G,OAAS,IAClE5kB,MAAAypB,qBAAqBhpB,KAAM,eAC3BA,KAAKokC,iDAGT,SACmBrlC,EAAOyE,GAClBxD,KAAKod,KAAKwjB,oBAAoB5gC,KAAKod,KAAKwjB,mBAAmB7hC,EAAOyE,+DAG1E,SAAA2kB,EACoBsf,EAAKzyB,GADzB,OAAA6C,mBAAAO,MAAA,SAAAgQ,GAAA,OAAA,OAAAA,EAAA9P,KAAA8P,EAAA7P,MAAA,KAAA,EAAA,GAEIvY,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,sBACtBo2B,OAAQ8N,EACR7N,MAAO,qBAEXr6B,MAAA4C,IAAInC,KAAM,eAAe,GACd,QAAPynC,GAAeloC,MAAA4C,IAAInC,KAAM,WAAYgV,GAC7B,YAARyyB,GAAmBloC,MAAA4C,IAAInC,KAAM,cAAegV,GACrC,UAAPyyB,GAAiBznC,KAAK0nC,UAAU1yB,GACxB,YAARyyB,GAAmBznC,KAAK2nC,WAAW3yB,GAC3B,SAARyyB,GAAgBznC,KAAK4nC,QAAQ5yB,GACrB,WAARyyB,EAbR,CAAArf,EAAA7P,KAAA;AAAA,MAAA,GAcahZ,MAAAN,IAAI+V,EAAK,+BAdtB,CAAAoT,EAAA7P,KAAA;AAAA,MAAA,OAAA6P,EAAA5P,OAAA,SAemBxY,KAAKguB,cAAc6Z,QAAQ7nC,KAAKL,KAAK2C,EAAE,wBAAyB,CACnE2rB,WAAW;AAhB3B,KAAA,GAmBQjuB,KAAK8nC,aAAa9yB,EAAK;AAnB/B,KAAA,GAqBgB,aAARyyB,IACKznC,KAAKma,SAAQna,KAAKma,OAASna,KAAKkK,MAAMwe,WAAW1oB,KAAKuD,OAC3DvD,KAAKomC,aAAepxB;AAvB5B,KAAA,GAAA,IAAA,MAAA,OAAAoT,EAAAhP,UAAA+O,EAAAnoB,2EA2BA,WAEI,IAAMo/B,EAASvgC,OAAO49B,OAAO,GAAIl9B,MAAAN,IAAIe,KAAM;AAC3CT,MAAA4C,IAAInC,KAAM,WAAYA,KAAKkN,MAAM4b,aAAa9oB,KAAKuD,KAAM67B,0BAG7D,WAEIp/B,KAAKokC,yCAGT,SACW2D,GACPxoC,MAAA4C,IAAInC,KAAM,cAAe+nC,GACzB/nC,KAAKokC,uEAGT,SAAA4D,EACgBzV,GADhB,IAAA5N,EAAAsjB,EAAA9nC;AAAA,OAAA0X,mBAAAO,MAAA,SAAA8vB,GAAA,OAAA,OAAAA,EAAA5vB,KAAA4vB,EAAA3vB,MAAA,KAAA,EAAA,GAC0BoM,EAD1BsjB,EAAA/0B,OAAA,QAAAwR,IAAAujB,EAAA,GAAAA,EAAA,GACmC,GAC/B1oC,MAAA4C,IAAInC,KAAM,cAAc,GACxBA,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,kBACtBo2B,OAAQ,aACRC,MAAO,qBANfsO,EAAA5vB,KAAA,EASoC,gBAAxBqM,EAAOwjB,aATnB,CAAAD,EAAA3vB,KAAA;AAAA,MAAA,OAAA2vB,EAAA3vB,KAAA,EAUkBvY,KAAKooC,YAAYC,cACnBroC,KAAKuD,KACLvD,KAAKsoC,mBACLtoC,KAAKmkC,eACLnkC,KAAKykC,QAAQnS,MAAM,iBAAiB3U,KAAK,KACzCgH,EACA;AAhBhB,KAAA,EAAAujB,EAAA3vB,KAAA;AAAA;AAAA,KAAA,EAAA,OAAA2vB,EAAA3vB,KAAA,GAmBkBvY,KAAKuoC,UAAUhW,EAAU5N,EAAQ;AAnBnD,KAAA,GAAAujB,EAAA3vB,KAAA;AAAA;AAAA,KAAA,GAAA2vB,EAAA5vB,KAAA,GAAA4vB,EAAAluB,GAAAkuB,EAAA,MAAA,GAsBQloC,KAAK2B,MAAM6mC,OAAXN,EAAAluB;AAtBR,KAAA,GAAA,OAAAkuB,EAAA5vB,KAAA,GAwBQ/Y,MAAA4C,IAAInC,KAAM,cAAc,GAxBhCkoC,EAAAO,OAAA;AAAA,KAAA,GAAA,IAAA,MAAA,OAAAP,EAAA9uB,UAAA4uB,EAAAhoC,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,kHA4BA,SAAA0oC,EACoB/jB,GADpB,OAAA9M,mBAAAO,MAAA,SAAAuwB,GAAA,OAAA,OAAAA,EAAArwB,KAAAqwB,EAAApwB,MAAA,KAAA,EAAA,OAEIhZ,MAAA4C,IAAInC,KAAM,cAAc,GACxBA,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,kBACtBo2B,OAAQ,0BACRC,MAAO,qBANf+O,EAAArwB,KAAA,EASY/Y,MAAAqT,QAAQ5S,KAAK4oC,YAAL,iBAAqC5oC,KAAK4oC,YAAL,QATzDD,EAAApwB,KAAA,EAUcvY,KAAKooC,YAAYC,cACnBroC,KAAKuD,KACLvD,KAAKsoC,mBACLtoC,KAAK4oC,YACL5oC,KAAKykC,QAAQnS,MAAM,iBAAiB3U,KAAK,KACzCgH,EACA;AAhBZ,KAAA,EAAAgkB,EAAApwB,KAAA;AAAA;AAAA,KAAA,EAAAowB,EAAArwB,KAAA,EAAAqwB,EAAA3uB,GAAA2uB,EAAA,MAAA,GAmBQ3oC,KAAK2B,MAAM6mC,OAAXG,EAAA3uB;AAnBR,KAAA,GAAA,OAAA2uB,EAAArwB,KAAA,GAqBQ/Y,MAAA4C,IAAInC,KAAM,cAAc,GArBhC2oC,EAAAF,OAAA;AAAA,KAAA,GAAA,IAAA,MAAA,OAAAE,EAAAvvB,UAAAsvB,EAAA1oC,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA,8GAyBA,SAAA6oC,EACgBtW,GADhB,IAAAtxB,EAAAwjC;AAAA,OAAA5sB,mBAAAO,MAAA,SAAA0wB,GAAA,OAAA,OAAAA,EAAAxwB,KAAAwwB,EAAAvwB,MAAA,KAAA,EAAA,GAEIhZ,MAAA4C,IAAInC,KAAM,cAAc,GACxBA,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,kBACtBo2B,OAAQ,aACRC,MAAO,qBANfkP,EAAAxwB,KAAA,EASsB/Y,MAAAqT,QAAQ2f,GAT9B,CAAAuW,EAAAvwB,KAAA;AAAA,MAAAuwB,EAAA9uB,GAS0CuY,EAT1CuW,EAAAvwB,KAAA;AAAA;AAAA,KAAA,EAAA,OAAAuwB,EAAAvwB,KAAA,EAS2DvY,KAAK+oC;AAThE,KAAA,EAAAD,EAAA9uB,GAAA8uB,EAAA9vB;AAAA,KAAA,GAAA,OASc/X,EATd6nC,EAAA9uB,GAUcyqB,EAAUzkC,KAAKykC,QAAQ5iB,KAAI,SAAC2iB,GAC9B,MAAO,CAAE33B,KAAM23B,EAAItD,gBAAiB8H,IAAKxE,EAAI33B,KAAMyC,IAAKk1B,MAXpEsE,EAAAvwB,KAAA,GAacvY,KAAKooC,YAAYa,UAAUjpC,KAAKuD,KAAMtC,EAAMwjC;AAb1D,KAAA,GAAAqE,EAAAvwB,KAAA;AAAA;AAAA,KAAA,GAAAuwB,EAAAxwB,KAAA,GAAAwwB,EAAAI,GAAAJ,EAAA,MAAA,GAeQ9oC,KAAK2B,MAAM6mC,OAAXM,EAAAI;AAfR,KAAA,GAAA,OAAAJ,EAAAxwB,KAAA,GAiBQ/Y,MAAA4C,IAAInC,KAAM,cAAc,GAjBhC8oC,EAAAL,OAAA;AAAA,KAAA,GAAA,IAAA,MAAA,OAAAK,EAAA1vB,UAAAyvB,EAAA7oC,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,gHAqBA,SAAAmpC,EACkBxkB,GADlB,IAAAykB,EAAAC,EAAAjN,EAAAn7B,EAAAwjC,EAAA6E,EAAAC,EAAAC,EAAArpC;AAAA,OAAA0X,mBAAAO,MAAA,SAAAqxB,GAAA,OAAA,OAAAA,EAAAnxB,KAAAmxB,EAAAlxB,MAAA,KAAA,EAAA,GAC0B6wB,EAD1BI,EAAAt2B,OAAA,QAAAwR,IAAA8kB,EAAA,IAAAA,EAAA,GAC0CH,EAD1CG,EAAAt2B,OAAA,QAAAwR,IAAA8kB,EAAA,IAAAA,EAAA,GAEIjqC,MAAA4C,IAAInC,KAAM,cAAc,GACxBA,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,kBACtBo2B,OAAQ,eACRC,MAAO,qBANf6P,EAAAnxB,KAAA,EASY8jB,EAAUp8B,KAAK0pC,kBAEdnqC,MAAAqT,QAAQ5S,KAAKsoC,qBAAwBe,EAXlD,CAAAI,EAAAlxB,KAAA;AAAA,MAAAkxB,EAAAzvB,GAYkBha,KAAKsoC,mBAZvBmB,EAAAlxB,KAAA;AAAA;AAAA,KAAA,GAAA,OAAAkxB,EAAAlxB,KAAA,GAawBvY,KAAK+oC;AAb7B,KAAA,GAAAU,EAAAzvB,GAAAyvB,EAAAzwB;AAAA,KAAA,GAAA,GAUY/X,EAVZwoC,EAAAzvB,GAcYyqB,EAAUzkC,KAAKykC,QAAQ5iB,KAAI,SAAC2iB,GAC5B,MAAO,CAAE33B,KAAM23B,EAAItD,gBAAiB8H,IAAKxE,EAAI33B,KAAMyC,IAAKk1B,MAEtD8E,IAAS3kB,EAAOglB,WAAY3pC,KAAK4pC,eAAe3oC,GAClDsoC,EAAYvpC,KAAKooC,YAAYyB,wBAC7B7pC,KAAKuD,KACLtC,EACAwjC,EACArI,EACAkN,IAEAF,EAzBZ,CAAAK,EAAAlxB,KAAA;AAAA,MAAA,OAAAkxB,EAAAlxB,KAAA,GAyBiCvY,KAAKooC,YAAY0B,0BAA0BP;AAzB5E,KAAA,GAAA,OAAAE,EAAAjxB,OAAA,SAAAixB,EAAAzwB;AAAA,KAAA,GAAA,OAAAywB,EAAAlxB,KAAA,GA0BcvY,KAAKooC,YAAY2B,oBAAoBR;AA1BnD,KAAA,GAAAE,EAAAlxB,KAAA;AAAA;AAAA,KAAA,GAAAkxB,EAAAnxB,KAAA,GAAAmxB,EAAAP,GAAAO,EAAA,MAAA,GA4BQzpC,KAAK2B,MAAM6mC,OAAXiB,EAAAP;AA5BR,KAAA,GAAA,OAAAO,EAAAnxB,KAAA,GA8BQ/Y,MAAA4C,IAAInC,KAAM,cAAc,GA9BhCypC,EAAAhB,OAAA;AAAA,KAAA,GAAA,IAAA,MAAA,OAAAgB,EAAArwB,UAAA+vB,EAAAnpC,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,yFAkCA,SACoB2kB,GAChB,OAAQA,EAAOja,MACX,IAAK,aACD1K,KAAKgqC,UAAUhqC,KAAKsoC,mBAAoB3jB;AACxC;AACJ,IAAK,kBACD3kB,KAAKiqC,cAActlB;AACnB;AACJ,IAAK,eACD3kB,KAAKkqC,YAAYvlB,GAGzBplB,MAAA4C,IAAInC,KAAM,mBAAmB,2BAGjC,WAEIA,KAAKmqC,kFAGT,SAAAC,IAAA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAhN,EAAAz9B;AAAA,OAAA6X,mBAAAO,MAAA,SAAAsyB,GAAA,OAAA,OAAAA,EAAApyB,KAAAoyB,EAAAnyB,MAAA,KAAA,EAAA,GAEU8xB,EAAgBxqB,SAASC,cAAc,0BACzCvgB,MAAAN,IAAIe,KAAM,cAHlB,CAAA0qC,EAAAnyB,KAAA;AAAA,MAAA,OAIQvY,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,sBACtBo2B,OAAQ,UACRC,MAAO,qBAGP0Q,EAAe,GACfC,EAAiB,GAX7BG,EAAAnyB,KAAA,EAacvY,KAAKiB,KAAK2F,SAAQ,SAAC6Z,IAEjBlhB,MAAAN,IAAIwhB,EAAQ,uBACZlhB,MAAAN,IAAIwhB,EAAQ,WACXlhB,MAAAN,IAAIwhB,EAAQ,aAEb6pB,EAAap/B,KAAKuV;AAnBlC,KAAA,EAAA,GAwBalhB,MAAAqT,QAAQ03B,GAxBrB,CAAAI,EAAAnyB,KAAA;AAAA,MAAA,OAAAmyB,EAAAnyB,KAAA,GAyBgCvY,KAAKN,QAAQunC,QAAQjnC,KAAKL,KAAK2C,EAAE;AAzBjE,KAAA,GAAA,GAAAooC,EAAA1xB,KAAA,CAAA0xB,EAAAnyB,KAAA;AAAA,MAAA,OAAAmyB,EAAAlyB,OAAA;AAAA,KAAA,GA6BY8xB,EAAa1jC,SAAQ,SAAC6Z,GAClBA,EAAOyX,qBACF34B,MAAAN,IAAIwhB,EAAQ,cAAc8pB,EAAer/B,KAAKuV,EAAO1W;AA/B1E,KAAA,GAAA,OAAA2gC,EAAAnyB,KAAA,GAmCctQ,QAAQ0iC,IAAIJ;AAnC1B,KAAA,GAAA,OAAAG,EAAAnyB,KAAA,GAsC4BhZ,MAAAN,IAAIe,KAAM,QAAQmkB,QAAO,SAAC1D,GAC1C,OAAIlhB,MAAAN,IAAIwhB,EAAQ,eACZgd,EAAKsH,kBACE;AAzCvB,KAAA,GAsCYyF,EAtCZE,EAAA1xB,KA6CQzZ,MAAA4C,IAAInC,KAAM,OAAQwqC,GAElBjrC,MAAA4C,IAAInC,KAAM,cAAc,GAEpBqqC,GACAA,EAAc7L,UAAU5vB,OAAO,oCAlD3C87B,EAAAnyB,KAAA;AAAA;AAAA,KAAA,GAAA,GAqDYkyB,GAAiB,EAGI,KAArBzqC,KAAKijC,YAxDjB,CAAAyH,EAAAnyB,KAAA;AAAA,MAAA,OAAAmyB,EAAAnyB,KAAA,GAyDmCvY,KAAKN,QAAQunC,QAChCjnC,KAAKL,KAAK2C,EAAE;AA1D5B,KAAA,GAyDYmoC,EAzDZC,EAAA1xB;AAAA,KAAA,GA6DYyxB,IACAzqC,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,sBACtBo2B,OAAQ,SACRC,MAAO,qBAEX55B,KAAKojC,aAAe,GAChBpjC,KAAK2kC,eAAiB3kC,KAAK+kC,gBAC3BxlC,MAAA4C,IAAInC,KAAM,iBAAkBA,KAAK2kC,cACrCplC,MAAA4C,IAAInC,KAAM,cAAc,GAIpBqqC,GACAA,EAAc7L,UAAU9vB,IAAI;AA3E5C,KAAA,GAAA,IAAA,MAAA,OAAAg8B,EAAAtxB,UAAAgxB,EAAApqC,gHAiFA,SAAA4qC,EACmBrY,EAAUjyB,GAD7B,IAAAuqC,EAAAhO,EAAAD,EAAA5nB;AAAA,OAAA6C,mBAAAO,MAAA,SAAA0yB,GAAA,OAAA,OAAAA,EAAAxyB,KAAAwyB,EAAAvyB,MAAA,KAAA,EAAA,IAEQhZ,MAAAqT,QAAQ2f,GAFhB,CAAAuY,EAAAvyB,KAAA;AAAA,MAAA,OAAAuyB,EAAAtyB,OAAA;AAAA,KAAA,EAGIxY,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,uBACtBo2B,OAAQ,gBACRC,MAAO,qBAEP55B,KAAK2kC,aAAepS,EAASrf,QAAUqf,EAASrf,SAAWlT,KAAKiB,KAAKiS,QACrElT,KAAK+qC,iCAAiCxY,EAAUjyB,EAAQ,MAE5DN,KAAKgrC,wBAAwB,SACzBH,EAAuB,GAZ/BhO,EAAAC,GAaoBvK,GAbpBuY,EAAAxyB,KAAA,EAAAukB,EAAAhjB;AAAA,KAAA,EAAA,IAAA+iB,EAAAC,EAAAljB,KAAAojB,KAAA,CAAA+N,EAAAvyB,KAAA;AAAA,MAAA,GAaavD,EAbb4nB,EAAA79B,MAcQiB,KAAKgrC,wBAAwBh2B,EAAI5H,MACd,WAAf4H,EAAI1U,QAAkC,aAAXA,EAfvC,CAAAwqC,EAAAvyB,KAAA;AAAA,MAAA,OAgBYsyB,EAAqB3/B,KAAK8J,GAhBtC81B,EAAAtyB,OAAA,WAAA;AAAA,KAAA,GAAA,OAmBQjZ,MAAA4C,IAAI6S,EAAK,SAAU1U,GAnB3BwqC,EAAAxyB,KAAA,GAAAwyB,EAAAvyB,KAAA,GAqBkBvD,EAAI6xB;AArBtB,KAAA,GAsBY7xB,EAAIjL,SAtBhB+gC,EAAAvyB,KAAA;AAAA;AAAA,KAAA,GAAAuyB,EAAAxyB,KAAA,GAAAwyB,EAAA9wB,GAAA8wB,EAAA,MAAA,IAwBY9qC,KAAK2B,MAAM6mC,OAAXsC,EAAA9wB,IACAhF,EAAIkjB;AAzBhB,KAAA,GAAA4S,EAAAvyB,KAAA;AAAA;AAAA,KAAA,GAAAuyB,EAAAvyB,KAAA;AAAA;AAAA,KAAA,GAAAuyB,EAAAxyB,KAAA,GAAAwyB,EAAA5B,GAAA4B,EAAA,MAAA,GAAAjO,EAAA1V,EAAA2jB,EAAA5B;AAAA,KAAA,GAAA,OAAA4B,EAAAxyB,KAAA,GAAAukB,EAAAS,IAAAwN,EAAArC,OAAA;AAAA,KAAA,GAAA,OAAAqC,EAAAvyB,KAAA,GA4BUvY,KAAKirC,2BAA2BJ;AA5B1C,KAAA,GA6BI7qC,KAAKkrC,cAAc5qC;AA7BvB,KAAA,GAAA,IAAA,MAAA,OAAAwqC,EAAA1xB,UAAAwxB,EAAA5qC,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,IAAA,CAAA,GAAA,uFAgCA,SACgBuyB,EAAU7nB,GACtBnL,MAAA4C,IAAInC,KAAM,mBAAmB,GAC7BT,MAAA4C,IAAInC,KAAM,cAAc,GACxBT,MAAA4C,IAAInC,KAAM,iBAAkB0K,GAC5BnL,MAAA4C,IAAInC,KAAM,qBAAsBuyB,GAChChzB,MAAA4C,IAAInC,KAAM,4BAA6BA,KAAKmrC,4CAGhD,SACW5Y,EAAUkV,GAAK,IAAA2D,EAAAprC;AAClBT,MAAAqT,QAAQ2f,IACPvyB,KAAKwhC,UAAUmE,UAAU,CAAC,kBAE/B3lC,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,uBACtBo2B,OAAQ8N,EAAM,QACd7N,MAAO,qBAGP55B,KAAK2kC,aAAepS,EAASrf,QAAUqf,EAASrf,SAAWlT,KAAKiB,KAAKiS,QACrElT,KAAK+qC,iCAAiCxY,EAAU,KAAMkV,GAG1DlV,EAAS3rB,SAAQ,SAACoO,GACdo2B,EAAKtD,aAAa9yB,EAAKyyB,uDAI/B,WAEIloC,MAAA4C,IAAInC,KAAM,+BAA+B,oCAG7C,WAEQA,KAAKqjC,YACL9jC,MAAA4C,IAAInC,KAAM,eAAe,GAEzBT,MAAA4C,IAAInC,KAAM,eAAe,GAE7BA,KAAKokC,0EAGT,SAAAiH,EACmB9Y,EAAUkV,GAD7B,IAAAvK,EAAAD,EAAAjoB,EAAAiD,EAAAqzB,EAAAC,EAAAC,EAAAC;AAAA,OAAA5zB,mBAAAO,MAAA,SAAAszB,GAAA,OAAA,OAAAA,EAAApzB,KAAAozB,EAAAnzB,MAAA,KAAA,EAAA,IAEQhZ,MAAAqT,QAAQ2f,GAFhB,CAAAmZ,EAAAnzB,KAAA;AAAA,MAAA,OAAAmzB,EAAAlzB,OAAA;AAAA,KAAA,EAAA,GAGgB,WAARivB,EAHR,CAAAiE,EAAAnzB,KAAA;AAAA,MAAA,OAAAmzB,EAAAnzB,KAAA,EAIwBvY,KAAKN,QAAQunC,QAAQjnC,KAAKL,KAAK2C,EAAE;AAJzD,KAAA,EAAA,IAAAopC,EAAA1yB,KAAA,CAAA0yB,EAAAnzB,KAAA;AAAA,MAAA2kB,EAAAJ,GAM4BvK,GAN5BmZ,EAAApzB,KAAA,EAAA4kB,EAAArjB;AAAA,KAAA,GAAA,IAAAojB,EAAAC,EAAAvjB,KAAAojB,KAAA,CAAA2O,EAAAnzB,KAAA;AAAA,MAAA,OAMqBvD,EANrBioB,EAAAl+B,MAAA2sC,EAAAnzB,KAAA,GAOsBvD,EAAImU;AAP1B,KAAA,GAAA,OAAAuiB,EAAAnzB,KAAA,GAQsBvD,EAAI22B;AAR1B,KAAA,GAAAD,EAAAnzB,KAAA;AAAA;AAAA,KAAA,GAAAmzB,EAAAnzB,KAAA;AAAA;AAAA,KAAA,GAAAmzB,EAAApzB,KAAA,GAAAozB,EAAA1xB,GAAA0xB,EAAA,MAAA,GAAAxO,EAAA/V,EAAAukB,EAAA1xB;AAAA,KAAA,GAAA,OAAA0xB,EAAApzB,KAAA,GAAA4kB,EAAAI,IAAAoO,EAAAjD,OAAA;AAAA,KAAA,GAUYzoC,KAAKokC;AAVjB,KAAA,GAAAsH,EAAAnzB,KAAA;AAAA;AAAA,KAAA,GAAA,OAAAmzB,EAAAnzB,KAAA,GAawBvY,KAAKN,QAAQunC,QAAQjnC,KAAKL,KAAK2C,EAAE;AAbzD,KAAA,GAAA,IAAAopC,EAAA1yB,KAAA,CAAA0yB,EAAAnzB,KAAA;AAAA,MAegBN,GAAc,EAAAW,EAAAC,WAAU7Y,KAAKuD,MAAMuV,YACnCwyB,EAAO,IACNtrC,KAAKuD,KAAKuV,YAAc,CAAE8yB,kBAAmB,UAjB9DL,EAAAzO,GAkB4BvK,GAlB5BmZ,EAAApzB,KAAA,GAAAizB,EAAA1xB;AAAA,KAAA,GAAA,IAAA2xB,EAAAD,EAAA5xB,KAAAojB,KAAA,CAAA2O,EAAAnzB,KAAA;AAAA,MAAA,OAkBqBvD,EAlBrBw2B,EAAAzsC,MAAA2sC,EAAAnzB,KAAA,GAmBsBvY,KAAK6rC,WAAW9mC,QAClB,OACA,IAAMkT,EAAc,IAAMjD,EAAIrR,GAAK,kBACnC,MACA2nC;AAvBpB,KAAA,GAAA,OAAAI,EAAAnzB,KAAA,GAyBsBvD,EAAI22B;AAzB1B,KAAA,GAAAD,EAAAnzB,KAAA;AAAA;AAAA,KAAA,GAAAmzB,EAAAnzB,KAAA;AAAA;AAAA,KAAA,GAAAmzB,EAAApzB,KAAA,GAAAozB,EAAAxC,GAAAwC,EAAA,MAAA,IAAAH,EAAApkB,EAAAukB,EAAAxC;AAAA,KAAA,GAAA,OAAAwC,EAAApzB,KAAA,GAAAizB,EAAAjO,IAAAoO,EAAAjD,OAAA;AAAA,KAAA,GA2BYzoC,KAAKokC;AA3BjB,KAAA,GAAA,IAAA,MAAA,OAAAsH,EAAAtyB,UAAAiyB,EAAArrC,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,IAAA,CAAA,GAAA,GAAA,GAAA,gHAgCA,SAAA8rC,EACgBC,EAAIhpC,EAAO6jB,EAASjC,GADpC,IAAAqnB,EAAAC,EAAAC,EAAAZ,EAAAa;AAAA,OAAAt0B,mBAAAO,MAAA,SAAAg0B,GAAA,OAAA,OAAAA,EAAA9zB,KAAA8zB,EAAA7zB,MAAA,KAAA,EAAA,OAEIhZ,MAAA4C,IAAInC,KAAM,cAAc,GACpBgsC,EAAYhsC,KAAK4kC,iBAAmB5kC,KAAK+oC,gBAAkB/oC,KAAKsoC,mBAHxE8D,EAAA7zB,KAAA,EAI6BvY,KAAKqsC,yBAAyB1nB,EAAQqnB;AAJnE,KAAA,EAAA,OAIQC,EAJRG,EAAApzB,KAKQkzB,EAASF,EAAYA,EAAUnqB,KAAI,SAAC5L,GAAD,OAAU1W,MAAAN,IAAIgX,EAAM,SAAS,GAC9Dq1B,EAAO,CACTgB,WAAYP,EACZQ,MAAON,EACPrlB,QAASA,EACT4lB,KAAMxsC,KAAKL,KAAKgiB,cAChB8qB,gBAAiBltC,MAAAN,IAAI0lB,EAAQ,gBAC7BhZ,UAAW3L,KAAKuD,KAChB2oC,OAAQA,EACRQ,OAAQ3pC,EACR2H,KAAMnL,MAAAN,IAAI0lB,EAAQ,QAClBgoB,iBAAiD,eAA/BptC,MAAAN,IAAI0lB,EAAQ,gBAhBtCynB,EAAA7zB,KAAA,EAkBoBvY,KAAK6rC,WAAW9mC,QAAQ,QAAS,qBAAsB,OAAQumC;AAlBnF,KAAA,GAkBQa,EAlBRC,EAAApzB,MAmBQ4zB,GAAKrtC,MAAA4C,IAAInC,KAAM,aAAa,GAAQT,MAAA4C,IAAInC,KAAM,cAAc,GAE5D2kB,EAAOkoB,cAAgBV,EAAIS,IAAI5sC,KAAK8sC,sBAAsBf,EAAI/rC,KAAKuD,KAAM2oC,GAE7E3sC,MAAA4C,IAAInC,KAAM,cAAc;AAvB5B,KAAA,GAAA,IAAA,MAAA,OAAAosC,EAAAhzB,UAAA0yB,EAAA9rC,0FA0BA,SACe+sC,GACX/sC,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,wBACtBo2B,OAAQoT,EACRnT,MAAO,qBAEXr6B,MAAA4C,IAAInC,KAAM,cAAe,GACzBT,MAAA4C,IAAInC,KAAM,cAAe+sC,GACzB/sC,KAAKgtC,oBAAoBC,eAAejtC,KAAKktC,gBAAiBH,GAC9D/sC,KAAKokC,0CAGT,SACYpjB,GACJzhB,MAAAN,IAAI+hB,EAAO,gBACXhhB,KAAKu5B,UAAUG,WAAW,CACtBD,SAAUz5B,KAAKuD,KAAO,yBACtBo2B,OAAQp6B,MAAAN,IAAI+hB,EAAO,eAAeglB,UAClCpM,MAAO,qBAEf55B,KAAKghB,MAAQA,EACbhhB,KAAKgtC,oBAAoBC,eAAejtC,KAAKmtC,eAAgBnsB,GAC7DhhB,KAAK+J,sEAGT,SAAAqjC,IAAA,OAAAv1B,mBAAAO,MAAA,SAAAi1B,GAAA,OAAA,OAAAA,EAAA/0B,KAAA+0B,EAAA90B,MAAA,KAAA,EAAA,OAAA80B,EAAA90B,KAAA,EAEUvY,KAAK6rC,WAAW9mC,QAClB,QADE,wBAAAnE,OAEsBZ,KAAKuD,KAF3B,aAAA3C,OAE2CZ,KAAKujC,aAClD;AALR,KAAA,EAOIvjC,KAAK+jC;AAPT,KAAA,EAAA,IAAA,MAAA,OAAAsJ,EAAAj0B,UAAAg0B,EAAAptC,mFAUA,WAEIA,KAAKwnC,SAAStP,qBACdl4B,KAAKwnC,SAAW,+BAGpB,SACWvxB,GAEP,IAAIjW,KAAKqkC,kBAAT,CAGA,GAAIrkC,KAAKknC,oBAAqB,OAAOlnC,KAAKstC,0BAA0Br3B;AAGpE,IAAMs3B,EAAqBvtC,KAAK2jC,YAAYhb,OAAO,YAAa1S,EAAK+vB;AACjEuH,EAAoBhuC,MAAA4C,IAAIorC,EAAoB,QAASt3B,EAAKie,OACzDl0B,KAAK2jC,YAAYjV,WAAW,CAAEsX,UAAW/vB,EAAK+vB,UAAW9R,MAAOje,EAAKie,QAE1El0B,KAAK+G,aAAaO,QAAQtH,KAAK0+B,gBAAkB,eAAgB1+B,KAAK2jC,6CAG1E,SACgBxrB,GACZ5Y,MAAA4C,IAAInC,KAAM,eAAgBmY,GACtBnY,KAAKonC,iBAAiBpnC,KAAKqnC,cAAclvB,4EAGjD,SAAAq1B,EAAiCr1B,GAAjC,IAAAs1B,EAAAC,EAAA14B;AAAA,OAAA6C,mBAAAO,MAAA,SAAAu1B,GAAA,OAAA,OAAAA,EAAAr1B,KAAAq1B,EAAAp1B,MAAA,KAAA,EAAA,IACQhZ,MAAAqT,QAAQuF,GADhB,CAAAw1B,EAAAp1B,KAAA;AAAA,MAAA,OAAAo1B,EAAAn1B,OAAA;AAAA,KAAA,EAAA,IAGcjZ,MAAM2J,QAHpB,CAAAykC,EAAAp1B,KAAA;AAAA,MAAAo1B,EAAA3zB,IAIU,EAJV2zB,EAAAp1B,KAAA;AAAA;AAAA,KAAA,EAAA,OAAAo1B,EAAAp1B,KAAA,EAKgBvY,KAAKN,QAAQunC,QACfjnC,KAAKL,KAAK2C,EAAE,oCAAqC,CAAE4W,MAAOf,EAAKjF;AAN7E,KAAA,EAAAy6B,EAAA3zB,GAAA2zB,EAAA30B;AAAA,KAAA,EAAA,GAAA20B,EAAA3zB,GAAA,CAAA2zB,EAAAp1B,KAAA;AAAA,MAAA,OAAAo1B,EAAAn1B,OAAA;AAAA,KAAA,GAAAi1B,EAAA3Q,GAUoB3kB,GAVpBw1B,EAAAr1B,KAAA,GAAAm1B,EAAA5zB;AAAA,KAAA,GAAA,IAAA6zB,EAAAD,EAAA9zB,KAAAojB,KAAA,CAAA4Q,EAAAp1B,KAAA;AAAA,MAAA,OAUavD,EAVb04B,EAAA3uC,MAWQQ,MAAA4C,IAAI6S,EAAK,SAAU,YAX3B24B,EAAAr1B,KAAA,GAAAq1B,EAAAp1B,KAAA,GAakBvD,EAAI6xB;AAbtB,KAAA,GAcY7xB,EAAIjL,SAdhB4jC,EAAAp1B,KAAA;AAAA;AAAA,KAAA,GAAAo1B,EAAAr1B,KAAA,GAAAq1B,EAAAzE,GAAAyE,EAAA,MAAA,IAgBY3tC,KAAK2B,MAAM6mC,OAAXmF,EAAAzE,IACAl0B,EAAIkjB;AAjBhB,KAAA,GAAAyV,EAAAp1B,KAAA;AAAA;AAAA,KAAA,GAAAo1B,EAAAp1B,KAAA;AAAA;AAAA,KAAA,GAAAo1B,EAAAr1B,KAAA,GAAAq1B,EAAAC,GAAAD,EAAA,MAAA,IAAAF,EAAAtmB,EAAAwmB,EAAAC;AAAA,KAAA,GAAA,OAAAD,EAAAr1B,KAAA,GAAAm1B,EAAAnQ,IAAAqQ,EAAAlF,OAAA;AAAA,KAAA,GAAA,IAAA,MAAA,OAAAkF,EAAAv0B,UAAAo0B,EAAAxtC,KAAA,CAAA,CAAA,GAAA,GAAA,GAAA,IAAA,CAAA,GAAA,+FAsBA,SAA0BiW,GACtB,IAAIoG,EAAWrc,KAAKkN,MAAMsZ,WAAW,uBAAwBxmB,KAAKknC,qBAE9D2G,EAAa3qC,KAAKwD,MAAM2V,EAASooB;AACrCoJ,EAAWllB,OAAO,YAAa1S,EAAK+vB,WAAW9R,MAAQje,EAAKie,MAE5D30B,MAAA4C,IAAIka,EAAU,UAAWnZ,KAAKC,UAAU0qC,IACxCxxB,EAASwqB,OAET7mC,KAAK+G,aAAaO,QAAQtH,KAAK0+B,gBAAkB,oBAAqB,CAClEz9B,KAAMob,EACN0qB,QAAS1qB,EAAS1Y,kCAI1B,SAAc5E,GAAO,IAAA+uC,EAAA9tC;AAEjB,GADAT,MAAA4C,IAAInC,KAAM,uBAAwBA,KAAK+tC,SAAShvC,IAC5CA,EAAO,CACPQ,MAAA4C,IAAInC,KAAM,aAAa;AACvB,IAAMguC,EAAiBjvC,EAClB0Q,MAAM,KACNoS,KAAI,SAAC1C,GAAD,OAAS2uB,EAAKvJ,WAAW1/B,MAAK,SAAC2/B,GAAD,OAASA,EAAI33B,OAASsS;AAC7D5f,MAAA4C,IACInC,KACA,UACAguC,EAAeptC,OACXZ,KAAKykC,QAAQtgB,QACT,SAACqgB,GAAD,OACIsJ,EAAKpK,iBAAiB5hC,SAAS0iC,EAAI95B,QAClC3L,EAAM0Q,MAAM,KAAK3N,SAAS0iC,EAAI33B,gBAK/C7M,KAAK8jC,oBACLvkC,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,KAAKk/B,WAAY,OAAOva;AAE7B,IAAMlV,EAAQzP,KAAKk/B,WAAWp9B,SAAS,KACjC9B,KAAKk/B,WAAWzvB,MAAM,KACtBzP,KAAKk/B,WAAWzvB,MAAM;AAM5B,OAJIlQ,MAAA+gB,UAAUqE,EAAOlV,EAAM,OACvBkV,EAAO3kB,KAAKk/B,YAAcva,EAAOlV,EAAM,WAChCkV,EAAOlV,EAAM,KAEjBkV,gCAGX,SAAe1jB,GACX,IAAMgtC,GAAU,EAAAC,EAAAC,SAAQltC,EAAMjB,KAAKykC,QAASzkC,KAAKuD,KAAMvD,KAAKwhC,UAAWxhC,KAAKkK,OAAO,GAC7EkkC,EAAYH,EAAQ,GAAKpvC,OAAOugC,OAAO6O,EAAQ,IAAM;AAE3D,OADAG,EAAUhnB,QAAQ,IACXgnB,EAAUvsB,KAAI,SAAC7M,GAAD,OAAUzV,MAAAua,OAAAu0B,WAAWr5B,GAAOA,EAAIs5B,OAASt5B,mCAGlE,WACIhV,KAAKuuC,oBAAsBvuC,KAAKkN,MAAM7J,MAAM,uBAAwB,CAChEmrC,0BAA2BxuC,KAAKuD,uEAIxC,SAAAkrC,EAAwBpyB,GAAxB,IAAAqyB,EAAAC,EAAAtS,EAAAmD,EAAAoP,EAAAC,EAAAC,EAAA9uC;AAAA,OAAA6X,mBAAAO,MAAA,SAAA22B,GAAA,OAAA,OAAAA,EAAAz2B,KAAAy2B,EAAAx2B,MAAA,KAAA,EAAA,GACUm2B,EAAoB1uC,KAAK+G,aAAaP,QACxCxG,KAAK0+B,gBAAkB,qBAErB1+B,KAAK+G,aAAaP,QAAQxG,KAAK0+B,gBAAkB,qBAAqBqI,QACtE,KACNxnC,MAAA4C,IAAInC,KAAM,sBAAuB0uC,GAAwC,MACzEnvC,MAAA4C,IAAInC,KAAM,iBAAkB,KACxBqc,EAAS+f,QARjB,CAAA2S,EAAAx2B,KAAA;AAAA,MAAA,GASco2B,EAAmB,CACrB,YACA,YACA,aACA,aACA,YACA,YACA,qBAEEtS,EAAgBn5B,KAAKwD,MAAM2V,EAAS+f,SACrCp8B,KAAKgvC,oBAnBlB,CAAAD,EAAAx2B,KAAA;AAAA,MAAA,OAAAw2B,EAAAx2B,KAAA,EAmB6CvY,KAAKivC;AAnBlD,KAAA,EAoBQpwC,OAAOqwC,QAAQ7S,GAAez1B,SAAQ,SAACud,GACnC,IAAM2O,EAAc6b,EAAiB7sC,SAASqiB,EAAO,IAC/C2qB,EAAKK,gBAAgBhrB,EAAO,IAC5BA,EAAO;AAEb,GAAIA,EAAO,GAAGriB,SAAS,KAAM,CACzB,IAAMwoB,EAAWnG,EAAO,GAAG1U,MAAM,KAC7B2/B,EAAS9kB,EAASpX,OAAS,EAAI,EAAI;AACvC47B,EAAK3K,eAAe7Z,EAAS8kB,GAAU,IAAM9kB,EAAS8kB,EAAS,GAAK,KAChEtc,OAEJgc,EAAK3K,eAAehgB,EAAO,IAAM2O,KAGnC0M,EAAoB3gC,OAAO8H,KAAK01B,GAAelY,QAAO,SAACkrB,GAAD,OAAOA,EAAEvtC,SAAS,QACxE8sC,EAAgB/vC,OAAO8H,KAAK01B,GAAelY,QAAO,SAACkrB,GAAD,OAAQA,EAAEvtC,SAAS,QAE3EvC,MAAA4C,IAAInC,KAAM,cAAeqc,EAASgkB,aAClC9gC,MAAA4C,IAAInC,KAAM,cAAe4uC,EAAcjxB,KAAK,KAAO,cACnDpe,MAAA4C,IAAInC,KAAM,oBAAqBw/B,EAAkB7hB,KAAK;AAvC9D,KAAA,GAyCQtB,EAASwI,OAAOtlB,MAAA4C,IAAInC,KAAM,cAAeqc,EAASwI,OAClDxI,EAASmqB,OACHqI,EAAY3rC,KAAKwD,MAAM2V,EAASmqB,MACjC3kB,KAAI,SAACytB,GAAD,OAASA,EAAIziC,QACjB8Q,KAAK,KACV3d,KAAKmkC,eAAL,QAAiC0K,EACjC7uC,KAAKmkC,eAAL,MAA+B0K,GAEnCtvC,MAAA4C,IAAInC,KAAM,cAAoC,YAArBqc,EAASoqB,SAClClnC,MAAA4C,IAAInC,KAAM,YAAkC,UAArBqc,EAASoqB,SAChClnC,MAAAypB,qBAAqBhpB,KAAM;AAnD/B,KAAA,GAAA,IAAA,MAAA,OAAA+uC,EAAA31B,UAAAq1B,EAAAzuC,qFAsDA,SAAgBjB,GACZ,OAAQA,GACJ,IAAK,YACD,OACI,EAAA4gB,EAAAzgB,WAASqwC,QAAQ,WAAWp+B,OAAO,cACnC,KACA,EAAAwO,EAAAzgB,WAASswC,MAAM,WAAWr+B,OAAO;AAEzC,IAAK,YACD,OACI,EAAAwO,EAAAzgB,WAASqW,SAAS,EAAG,QAAQg6B,QAAQ,WAAWp+B,OAAO,cACvD,KACA,EAAAwO,EAAAzgB,WAASqW,SAAS,EAAG,QAAQi6B,MAAM,WAAWr+B,OAAO;AAE7D,IAAK,aACD,OACI,EAAAwO,EAAAzgB,WAASqwC,QAAQ,SAASp+B,OAAO,cACjC,KACA,EAAAwO,EAAAzgB,WAASswC,MAAM,SAASr+B,OAAO;AAEvC,IAAK,aACD,OACI,EAAAwO,EAAAzgB,WAASqW,SAAS,EAAG,SAASg6B,QAAQ,SAASp+B,OAAO,cACtD,KACA,EAAAwO,EAAAzgB,WAASqW,SAAS,EAAG,SAASi6B,MAAM,SAASr+B,OAAO;AAE5D,IAAK,YACD,OACI,EAAAwO,EAAAzgB,WAASqwC,QAAQ,QAAQp+B,OAAO,cAChC,KACA,EAAAwO,EAAAzgB,WAASswC,MAAM,QAAQr+B,OAAO;AAEtC,IAAK,YACD,OACI,EAAAwO,EAAAzgB,WAASqW,SAAS,EAAG,QAAQg6B,QAAQ,QAAQp+B,OAAO,cACpD,KACA,EAAAwO,EAAAzgB,WAASqW,SAAS,EAAG,QAAQi6B,MAAM,QAAQr+B,OAAO;AAE1D,IAAK,oBACD,OAAOnR,KAAKgvC;AAChB,QACI,OACI,EAAArvB,EAAAzgB,WAASqwC,QAAQ,WAAWp+B,OAAO,cACnC,KACA,EAAAwO,EAAAzgB,WAASswC,MAAM,WAAWr+B,OAAO,8EAKjD,SAAAs+B,IAAA,IAAAC,EAAAC,EAAAC;AAAA,OAAA/3B,mBAAAO,MAAA,SAAAy3B,GAAA,OAAA,OAAAA,EAAAv3B,KAAAu3B,EAAAt3B,MAAA,KAAA,EAAA,GACQm3B,EAAgB1vC,KAAKkN,MAAM4iC,QAAQ,gBACnCvwC,MAAAqT,QAAQ88B,GAFhB,CAAAG,EAAAt3B,KAAA;AAAA,MAAA,OAAAs3B,EAAAt3B,KAAA,EAEsDvY,KAAKkN,MAAM6iC,QAAQ;AAFzE,KAAA,EAEgCL,EAFhCG,EAAA72B;AAAA,KAAA,EAAA,IAGQzZ,MAAAqT,QAAQ88B,GAHhB,CAAAG,EAAAt3B,KAAA;AAAA,MAAA,OAAAs3B,EAAAr3B,OAAA,SAIgBxY,KAAKgvC,qBACT,EAAArvB,EAAAzgB,WAASqwC,QAAQ,SAASp+B,OAAO,cACjC,KACA,EAAAwO,EAAAzgB,WAASswC,MAAM,SAASr+B,OAAO;AAP3C,KAAA,EAAA,GASUw+B,GAAc,EAAAhwB,EAAAzgB,WAASiS,OAAO,cAC9By+B,EAAiBF,EAAcvrB,QAAO,SAAC6rB,GACzC,OAAOA,EAAOC,mBAAqBN,GAAeK,EAAOE,iBAAmBP,MAE5EpwC,MAAAqT,QAAQg9B,GAbhB,CAAAC,EAAAt3B,KAAA;AAAA,MAAA,OAAAs3B,EAAAr3B,OAAA,SAcgBxY,KAAKgvC,qBACT,EAAArvB,EAAAzgB,WAASqwC,QAAQ,SAASp+B,OAAO,cACjC,KACA,EAAAwO,EAAAzgB,WAASswC,MAAM,SAASr+B,OAAO;AAjB3C,KAAA,GAmBInR,KAAKgvC,oBACDY,EAAe,GAAGK,kBAAoB,IAAML,EAAe,GAAGM;AApBtE,KAAA,GAAA,IAAA,MAAA,OAAAL,EAAAz2B,UAAAq2B,EAAAzvC,kHAuBA,SAAAmwC,EAAqB/rB,GAArB,IAAAgsB;AAAA,OAAAv4B,mBAAAO,MAAA,SAAAi4B,GAAA,OAAA,OAAAA,EAAA/3B,KAAA+3B,EAAA93B,MAAA,KAAA,EAAA,OAAA83B,EAAA93B,KAAA,EACyBvY,KAAKkN,MAAM7J,MAAM,UAAW,CAAEM,GAAIygB,EAAQzgB;AADnE,KAAA,EAAA,OACQysC,EADRC,EAAAr3B,KAAAq3B,EAAA73B,OAAA,SAEWjZ,MAAAN,IAAImxC,EAAU;AAFzB,KAAA,EAAA,IAAA,MAAA,OAAAC,EAAAj3B,UAAA+2B,EAAAnwC,wFAKA,SAAmBgV,GACf,OAAIA,EAAIsP,aACGtP,EAAIsP,aACJtP,EAAIoP,QACJpkB,KAAKswC,eAAet7B,EAAIoP,SAExB,qDAIf,SAAiCmO,GAAwC,IAA9BjyB,EAA8BH,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAArB,KAAMw5B,EAAex5B,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAN,KAC3DowC,EAAgBhe,EAAS1Q,KAAI,SAAC7M,GAAD,OAASzV,MAAAN,IAAI+V,EAAK,SAC7C4zB,EAAc5oC,KAAK4oC;AACzBA,EAAW,MAAY,MACvBA,EAAW,UAAe,EAE1BrpC,MAAAqnC,cAAc5mC,KAAKyjC,8BAA+B,CAC9C8M,cAAeA,EACfC,cAAe5H,EACfrlC,KAAMvD,KAAKuD,KACXjD,OAAQA,EACRq5B,OAAQA,EACR8W,SAAUzwC,KAAK2kC,eAEnBplC,MAAA4C,IAAInC,KAAM,+BAA+B,gCAG7C,SAAc0wC,GAEO,aAAbA,GACA1wC,KAAKwhC,UAAUmE,UAAU,CAAC,wCACZ,aAAd3lC,KAAKuD,OAELvD,KAAK2wC,kBAAmB,GAIX,aAAbD,GADmB,CAAC,WAAY,WACY5uC,SAAS9B,KAAKuD,OAC1DvD,KAAKm6B,QAAQC,iBAAiB,uDAGtC,SAAwBhtB,GACpB,GAAa,UAATA,EACA,OAAQpN,KAAK4wC,qBAAuB,CAAE/uC,KAAM,KAAMkqC,GAAI;AAIrD/rC,KAAK4wC,qBAAqB/uC,QAC3B,EAAA8d,EAAAzgB,SAAOkO,GAAMqH,SAASzU,KAAK4wC,qBAAqB/uC,QAEhD7B,KAAK4wC,qBAAL,KAAoCxjC,GAGnCpN,KAAK4wC,qBAAqB7E,MAAM,EAAApsB,EAAAzgB,SAAOkO,GAAMkI,QAAQtV,KAAK4wC,qBAAqB7E,MAChF/rC,KAAK4wC,qBAAL,GAAkCxjC,2DAI1C,SAAAyjC,EAAgBte,EAAU5N,GAA1B,IAAAmsB,EAAAzH,EAAA0H,EAAA/Q,EAAAgR,EAAA/vC,EAAAgwC,EAAAC,EAAAC,EAAApkB,EAAAqkB,EAAAjxC;AAAA,OAAA0X,mBAAAO,MAAA,SAAAi5B,GAAA,OAAA,OAAAA,EAAA/4B,KAAA+4B,EAAA94B,MAAA,KAAA,EAAA,OAAkCu4B,EAAlCM,EAAAl+B,OAAA,QAAAwR,IAAA0sB,EAAA,GAAAA,EAAA,GAAyC,WAAY/H,EAArD+H,EAAAl+B,OAAA,QAAAwR,IAAA0sB,EAAA,IAAAA,EAAA,GACUL,EAAkB/wC,KAAKykC,QAAQ5iB,KAAI,SAAC2iB,GAAD,OAASA,EAAIE,iBAAe/mB,KAAK,KACtEqiB,EAAcrb,EAAOtI,SACnB9c,MAAAN,IAAI0lB,EAAQ,oBACZosB,GAEA,KACFC,EAAW,CAAEztC,KAAMvD,KAAKuD,KAAM+tC,aAActR,GAC5C/+B,EAAOsxB,EAASrf,SAAWm2B,EAAkBrpC,KAAKiB,KAAOjB,KAAK+oC,gBARtEsI,EAAA94B,KAAA,EASwBvY,KAAKooC,YAAYmJ,iBACjCtwC,EACAsxB,EACAye,EACAhxC,KAAKykC,QACL9f,EACA0kB;AAfR,KAAA,EAAA,OASQ4H,EATRI,EAAAr4B,KAiBQk4B,EAAW,CAACD,IACZE,EAAenxC,KAAK0pC,mBACPx2B,OAAS,GACtBg+B,EAAS9pB,QAAQ,CACboqB,MAAO,CAAElG,KAAM6F,GACfM,OAAQ,cAtBpBJ,EAAA94B,KAAA,IAyBqB,EAAAm5B,EAAAC,uBAAsB3xC,KAAMkxC,EAAUJ,EAAM,GAAI,EAAGnsB;AAzBxE,KAAA,GAAA,OAyBQoI,EAzBRskB,EAAAr4B,KA2BQ1S,OAAOsrC,SACP5xC,KAAK4xC,QAAQC,SAAS9kB,EAAM,mBA5BpCskB,EAAA74B,OAAA,SA8BWuU;AA9BX,KAAA,GAAA,IAAA,MAAA,OAAAskB,EAAAj4B,UAAAy3B,EAAA7wC,uFAiCA,WAAkB,IAAA8xC,EAAA9xC,KACV+xC,EAAalzC,OAAO8H,KAAK3G,KAAKmkC;AAClC,OAAK4N,EACkBA,EAAWlwB,KAAI,SAAChb,GACnC,IAAImrC,EAAeF,EAAK3N,eAAet9B;AACvC,GAAKmrC,GAAiBF,EAAK5nC,MAAM8xB,YAAY8V,EAAKvuC,KAAMsD,GAAxD,CACA,IAAIrD,EAAQsuC,EAAK5nC,MAAM1G,MAAMsuC,EAAKvuC,KAAMsD,GAEpCorC,EAAkBH,EAAKI,mBAAmBrrC,GAC1CsrC,EAAmB;AAkCvB,OAhCIH,EAAalwC,SAAS,MACtBkwC,EAAaviC,MAAM,KAAK7I,SAAQ,SAAC7H,GAC7BozC,GACIL,EAAKtQ,UAAU4Q,SACI,aAAf5uC,EAAMkH,KAAsB4G,SAASvS,GAASA,EAC9C+yC,EAAKvuC,KACLsD,EACA,MACAirC,EAAK7wC,MACL,QAEZkxC,EAAmBA,EAAiB5sC,MAAM,GAAI,KAE9CysC,EAA8B,aAAfxuC,EAAMkH,KAAsB4G,SAAS0gC,GAAgBA,EAChEnrC,EAAI/E,SAAS,KACbqwC,GAAoBL,EAAKtQ,UAAU4Q,SAC/BJ,EACAF,EAAKvuC,KACLsD,EAAI4I,MAAM,KAAK,GACf,MACAqiC,EAAK7wC,MAGTkxC,GAAoBL,EAAKtQ,UAAU4Q,SAC/BJ,EACAF,EAAKvuC,KACLsD,EACA,MACAirC,EAAK7wC,OAIV,CAACgxC,EAAkB,KAAOE,OAGbhuB,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,EAAM09B,gBACf19B,EAAM09B,gBACNr6B,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,SAAAwrC,EAA+B1tB,EAAQ1jB,GAAvC,OAAA4W,mBAAAO,MAAA,SAAAk6B,GAAA,OAAA,OAAAA,EAAAh6B,KAAAg6B,EAAA/5B,MAAA,KAAA,EAAA+5B,EAAAt4B,GACY2K,EAAOja,KADnB4nC,EAAA/5B,KAEa,eAFb+5B,EAAAt4B,GAAA,EASa,oBATbs4B,EAAAt4B,GAAA,EAmBa,iBAnBbs4B,EAAAt4B,GAAA,GAAA;AAAA;AAAA,KAAA,EAAA,OAAAs4B,EAAA/5B,KAAA,EAGyBvY,KAAKuoC,UACdvoC,KAAKsoC,mBACL3jB,EACA,SACA3kB,KAAK4kC;AAPrB,KAAA,EAAA,OAAA0N,EAAA95B,OAAA,SAAA85B,EAAAt5B;AAAA,KAAA,EAAA,OAUgBzZ,MAAAqT,QAAQ5S,KAAK4oC,YAAL,iBAAqC5oC,KAAK4oC,YAAL,QAV7D0J,EAAA/5B,KAAA,EAWyBvY,KAAKooC,YAAYC,cAC1BroC,KAAKuD,KACLtC,EACAjB,KAAK4oC,YACL5oC,KAAKod,KAAK4iB,YACVrb,EACA;AAjBhB,KAAA,EAAA,OAAA2tB,EAAA95B,OAAA,SAAA85B,EAAAt5B;AAAA,KAAA,GAAA,OAAAs5B,EAAA/5B,KAAA,GAoByBvY,KAAKkqC,YAAYvlB,GAAQ,EAAM3kB,KAAK4kC;AApB7D,KAAA,GAAA,OAAA0N,EAAA95B,OAAA,SAAA85B,EAAAt5B;AAAA,KAAA,GAAA,IAAA,MAAA,OAAAs5B,EAAAl5B,UAAAi5B,EAAAryC,wFAwBA,SAAiB2kB,GAAQ,IAAA4tB,EAAAvyC;AACrB,IAAK2kB,EAAQ,MAAO;AACpB,IAAIyX,EAAU;AAUd,OATAv9B,OAAOqwC,QAAQvqB,GAAQ/d,SAAQ,SAAC4rC,GACvBA,EAAM,KAEQ,aADPD,EAAKroC,MAAM1G,MAAM+uC,EAAKhvC,KAAMivC,EAAM,IACpC9nC,KACN0xB,EAAQ,wBAA0BoW,EAAM,GAAK,aAAeA,EAAM,GAElEpW,EAAQ,qBAAuBoW,EAAM,GAAK,KAAOA,EAAM,OAGxDpW,mCAGX,WAAoB,IAAAqW,EAAAzyC,KACV0yC,EAAc1yC,KAAK+G,aAAaP,QAAQxG,KAAKuD,KAAO,mBACtDkhC,EAAO7R,GAAO5yB,KAAKukC;AACnBmO,IACAjO,EAAUiO,EAAYC,QAAO,SAACC,EAAK/M,GAC/B,IAAIgN,EAAeJ,EAAKlO,WAAW1/B,MAC/B,SAAC0F,GAAD,OAAYA,EAAOm6B,gBAAkBmB;AAGzC,OADIgN,GAAcD,EAAI1nC,KAAK2nC,GACpBD,IACR,KAEPrzC,MAAA4C,IAAInC,KAAM,UAAWykC,kCAGzB,WACI,IAAI59B,EAAM7G,KAAK0+B,gBAAkB1+B,KAAK0+B,gBAAkB,gBAAkB1+B,KAAKuD,KAAO;AAClFsD,GAAKtH,MAAA4C,IAAInC,KAAM,kBAAmB6G;AACtC,IAAIisC,EAAc9yC,KAAKgtC,oBAAoB+F,eAAelsC;AAC1DtH,MAAA4C,IAAInC,KAAM,cAAqC,GAAtB8yC,EAAY5/B,OAAc4/B,EAAc9yC,KAAKijC,4CAG1E,WACIjjC,KAAKmtC,eAAiBntC,KAAK0+B,gBACrB1+B,KAAK0+B,gBAAkB,eACvB1+B,KAAKuD,KAAO;AAClB,IAAIyvC,EAAahzC,KAAKgtC,oBAAoB+F,eAAe/yC,KAAKmtC;CAEzD6F,EAAW9/B,QAAUlT,KAAKizC,aAC3B1zC,MAAA4C,IAAInC,KAAM,QAASA,KAAKkzC,gBAAgBlzC,KAAKizC,cAG7CD,EAAW9/B,SAAQlT,KAAKghB,MAAQhhB,KAAKmzC,qBAAqBH,wCAMlE,SAAqBhyB,GACjB,IAEMoyB,EADapzC,KAAKwhC,UAAU9Y,WAAW1oB,KAAKuD,MAAMse,KAAI,SAACga,GAAD,OAAOA,EAAEhvB,QACvCjM,OAFZ,CAAC,mBAAoB;AAKvC,OAFsBogB,EAAMmD,QAAO,SAACqG,GAAD,OAAU4oB,EAAWtxC,SAAS0oB,EAAKwb,0CAK1E,SAAa5J,EAASiX,GAClB,GAAKA,EACL,IAAK,IAAMxsC,KAAOwsC,EAAO,CACrB,IAAMt0C,EAAQiB,KAAKszC,cAAcD,EAAMxsC;AACnC9H,IAAOq9B,EAAQv1B,GAAO9H,iCAIlC,SAAcA,GACV,OAAOA,GAA0B,WAAjByD,GAAOzD,GAAqBQ,MAAAN,IAAIF,EAAO,MAAQA,2BAGnE,SAAUiW,GACNzV,MAAAN,IAAIe,KAAM,WACLinC,QAAQ1nC,MAAAN,IAAIe,KAAM,QAAQsC,EAAE,0BAC5B2C,KAAKjF,KAAKuzC,YAAYphB,KAAKnyB,KAAMgV,6DAG1C,SAAAw+B,EAAiBx+B,GAAjB,IAAAiD,EAAAqzB;AAAA,OAAAzzB,mBAAAO,MAAA,SAAAq7B,GAAA,OAAA,OAAAA,EAAAn7B,KAAAm7B,EAAAl7B,MAAA,KAAA,EAAA,OACUN,GAAc,EAAAW,EAAAC,WAAU7Y,KAAKuD,MAAMuV,YACrCwyB,EAAO,IACNtrC,KAAKuD,KAAKuV,YAAc,CAAE8yB,kBAAmB,UAHtD6H,EAAAl7B,KAAA,EAIUvY,KAAK6rC,WAAW9mC,QAClB,OACA,IAAMkT,EAAc,IAAMjD,EAAIrR,GAAK,kBACnC,MACA2nC;AARR,KAAA,EAcSt2B,EAAI0+B,aACL1+B,EAAI22B,eAER3rC,KAAKokC,eACLpkC,KAAK2iB,QAAQkX,WAAW,UAAW75B,KAAKuD,KAAM;AAlBlD,KAAA,EAAA,IAAA,MAAA,OAAAkwC,EAAAr6B,UAAAo6B,EAAAxzC,4GAqBA,SAAA2zC,EAAc3+B,GAAd,IAAA4+B,EAAA3yC;AAAA,OAAA4W,mBAAAO,MAAA,SAAAy7B,GAAA,OAAA,OAAAA,EAAAv7B,KAAAu7B,EAAAt7B,MAAA,KAAA,EAAA,OACQq7B,EAAY5zC,KAAKwhC,UAAUsS,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,KAAK+kC,iBACLxlC,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,KAAKokC,eACLpkC,KAAK2iB,QAAQkX,WAAW,SAAU75B,KAAKuD,KAAM;AAJjD,KAAA,EAAA,IAAA,MAAA,OAAA6wC,EAAAh7B,UAAA86B,EAAAl0C,mHAOA,SAAAq0C,EAAmBr/B,EAAK2kB,GAAxB,IAAA1hB,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,SAAXo2B,EAAoB,CAAEkG,QAAQ,GAAS,CAAEA,QAAQ,GAHvEyU,EAAAh8B,KAAA,EAAAg8B,EAAA/7B,KAAA,EAKcvY,KAAK6rC,WAAW9mC,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,MAAM6mC,OAAX8L,EAAAt6B,IACAhF,EAAIkjB;AAdZ,KAAA,GAAA,IAAA,MAAA,OAAAoc,EAAAl7B,UAAAi7B,EAAAr0C,KAAA,CAAA,CAAA,EAAA,mFAkBA,WACIT,MAAA4C,IAAInC,KAAM,eAAgB,IAC1BT,MAAA4C,IAAInC,KAAM,OAAQA,KAAKkN,MAAM7J,MAAMrD,KAAKuD,KAAMvD,KAAK4oC,8CAGvD,SAAiB5nB,GAAO,IAAAuzB,EAAAv0C;AACpB,OAAOghB,EACFa,KACG,SAAC5L,GAAD,OACKA,EAAK+vB,UAAUlkC,SAAS,aACnByyC,EAAKC,qBAAqBv+B,EAAK+vB,WAC/B/vB,EAAK+vB,YAAc/vB,EAAKw+B,YAAc,IAAM,OAEzD92B,KAAK,+CAQd,SAA2BqD,GACvB,OAAOA,EACFa,KAAI,SAAC5L,GAAD,OAAWA,EAAKw+B,YAAc,IAAM,IAAM,cAAgBx+B,EAAK+vB,aACnEroB,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,CAAEygC,UAAW/vB,EAAK1Q,MAAM,GAAI,GAAIkvC,aAAa,GAC7C,CAAEzO,UAAW/vB,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,EAAM09B,gBACb97B,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,cAAc6Z,QAAQ7nC,KAAKL,KAAK2C,EAAE,yBAA0B,CAC7D2rB,WAAW,IAlBvB+mB,EAAAx8B,OAAA;AAAA,KAAA,GAAA,OAAAw8B,EAAAz8B,KAAA,GAuBUtQ,QAAQ0iC,IAAImK;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,EAAAtX;AAAA,OAAAxlB,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,EAAA8gB,EAAAC,aAAY7Y,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,IAiBcnY,EAAMr9B,KAAK2B,MAAMwb,QAAXq4B,EAAAx7B,KACT,MAAYtO,EAAQ,EACvB/I,EAAO+rB,WAAW2O,GAnB1BmY,EAAAh9B,OAAA,SAoBe6kB;AApBf,KAAA,GAAA,IAAA,MAAA,OAAAmY,EAAAp8B,UAAAm8B,EAAAv1C,KAAA,CAAA,CAAA,EAAA,sFAwBA,SAAa2kB,IAEa,WAAlBA,EAAOgV,QACY,WAAlBhV,EAAOgV,QAAuBhV,EAAOja,OAAS1K,KAAKuD,OAEpDvD,KAAKokC,eAEa,kBAAlBzf,EAAOgV,QAA8BhV,EAAOja,OAAS1K,KAAKuD,MAC1DvD,KAAKy1C,oBAEa,WAAlB9wB,EAAOgV,QAAuBhV,EAAOja,OAAS1K,KAAKuD,MAAQohB,EAAOlE,QAClEzgB,KAAK0nC,UAAU/iB,EAAOlE,QACJ,YAAlBkE,EAAOgV,QAAwBhV,EAAOja,OAAS1K,KAAKuD,MAAQohB,EAAOlE,QACnEzgB,KAAK2nC,WAAWhjB,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,EAAoBpjB,GAApB,IAAApa,EAAAnP,EAAA4sC,EAAA/iC,EAAAgjC,EAAAC,EAAA91C;AAAA,OAAA6X,mBAAAO,MAAA,SAAA29B,GAAA,OAAA,OAAAA,EAAAz9B,KAAAy9B,EAAAx9B,MAAA,KAAA,EAAA,GACQJ,EAAOoa,EAASrf,OAAS,EAAIqf,EAAWvyB,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,QAAQ0iC,IACVxyB,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,QAAQwV,MAAQr6B,MAAAN,IAAIi3C,EAAiB,WAE1DC,EAAI/xB,QAAUlhB,KAAKwD,MAAMwvC,GACzBC,EAAI/xB,QAAQwV,MAAQ5kB,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,SAAsBusC,EAAOhpC,EAAM2oC,GAAQ,IAAA0K,EAAA52C,KACjC8hB,EAAO9hB,KAAKL,KAAK2C,EAAE,qCAAsC,CAAEiqC,MAAOA;AACxE,OAAOL,EAAOtlC,SAAQ,SAACiwC,GACnB,OAAOD,EAAKpV,UAAUj4B,KAAK,CACvB1I,OAAQ,MACRC,IAAKyC,EAAO,KAAOszC,EACnB51C,KAAMiC,KAAKC,UAAU,CAAE2zC,SAAUh1B,8CA9mDA9F,EAAAA;4CAA5BgmB;;;;;;;;;;;;;;ACnDrB,IAAM7lB,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,0hOAAAzZ,KAAA,CAAA0Z,WAAA,qDAMPw6B;;;;;;8KAOjB,WACI,QAAK/2C,KAAK+7B,KAAKx6B,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,KAAK+7B,KAAKx6B,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,KAAK+7B,KAAKx6B,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,SACQkmC,GACJ,IAAI2P,EAAiB3P,EAAM;AAC3B,GAAIznC,KAAKod,KAAKg6B,GAAiB,OAAOp3C,KAAKod,KAAKg6B,GAAgBp3C,KAAKod,KAAKpI;AAEtEhV,KAAKod,KAAKi6B,eAAer3C,KAAKod,KAAKi6B,cAAc5P,EAAKznC,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,KAAKmV,UACRvyB,KAAKod,KAAKmV,SAASrf,OAAS,EAAI,GADP,wCAIpC,WACI,QAAKlT,KAAKkK,MAAM8xB,YAAYh8B,KAAKod,KAAK7Z,KAAM,YAChCvD,KAAKkK,MAAM1G,MAAMxD,KAAKod,KAAK7Z,KAAM,UAE/B8K,SAASkpC,wCAG3B,WACI,QAAKv3C,KAAKw3C,iBACHx3C,KAAKod,KAAK+oB,YAAYxd,OAAO,KAAM,kCAG9C,WACI,OACI3oB,KAAK+7B,KAAKx6B,KAAK,CAACvB,KAAKod,KAAK7Z,KAAO,eACjCvD,KAAK+7B,KAAKx6B,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,KAAK4sB,WAAWhqC,KAAKod,KAAK4sB,+CApCahuB,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,KAAKinB,mBACVv/B,EAAKoI,MACA7J,MAAM,iBAAkB,CAAEqzC,KAAM5xC,EAAKlF,QAAQi0B,YAAYlwB,KACzDsB,MAAK,SAAC4yC,GAAD,OACF/yC,EAAKgzC,oBAAoBD,EAAW/yC,EAAKsY,KAAKinB,kBAAkB1gC,OANlEmB,oCAWd,WACI,OAAO9E,KAAKod,KAAKqnB,mCAGrB,WACI,IAAMsT,EAAa/3C,KAAKykC,QAAQ5iB,KAAI,SAAC2iB,GAAD,OAASA,EAAIE;AACjD,OAAO1kC,KAAKod,KAAKmnB,WAAWpgB,QAAO,SAAC0hB,GAAD,OAAakS,EAAWj2C,SAAS+jC,EAAOnB,+CAG/E,SACcl/B,EAAQwyC,GACbA,GACDxyC,GAAUwyC,IACdh4C,KAAKi4C,mBAAmBj4C,KAAKykC,QAASzkC,KAAKykC,QAAQuT,GAAUxyC,EAASwyC,GACtEh4C,KAAKod,KAAKknB,eAAetkC,KAAKykC,SAC9BzkC,KAAKk4C,SAASl4C,KAAKykC,iCAGvB,SACQD,EAAK2T,GACTn4C,KAAKi4C,mBAAmBj4C,KAAKykC,QAASD,EAAK2T,GAC3Cn4C,KAAKod,KAAKknB,eAAetkC,KAAKykC,SAC9BzkC,KAAKk4C,SAASl4C,KAAKykC,mCAGvB,SACWD,GACPxkC,KAAKykC,QAAQpW,aAAamW,GAC1BxkC,KAAKod,KAAKknB,eAAetkC,KAAKykC,SAC9BzkC,KAAKk4C,SAASl4C,KAAKykC,mCAGvB,SACWD,GACPxkC,KAAKykC,QAAQ/V,WAAW8V,GACxBxkC,KAAKod,KAAKknB,eAAetkC,KAAKykC,SAC9BzkC,KAAKk4C,SAASl4C,KAAKykC,uCAGvB,SACesI,GACX/sC,KAAKod,KAAKg7B,eAAerL,qCAG7B,WACqB,IAAAl2B,EAAA7W,KAEXykC,EADczkC,KAAK+G,aAAaP,QAAQxG,KAAKod,KAAK7Z,KAAO,mBACnCovC,QAAO,SAACC,EAAK/M,GACrC,IAAIgN,EAAeh8B,EAAKuG,KAAKmnB,WAAW1/B,MACpC,SAAC0F,GAAD,OAAYA,EAAOm6B,gBAAkBmB;AAGzC,OADIgN,GAAcD,EAAI1nC,KAAK2nC,GACpBD,IACR;AACH5yC,KAAK+G,aAAaI,WAAWnH,KAAKod,KAAKshB,gBAAkB,oBACzD1+B,KAAKod,KAAKknB,eAAeG,GACzBllC,MAAA4C,IAAInC,KAAM,kBAAmB,sCAGjC,SACiBqc,GAAU,IAAAoH,EAAAzjB,KACjBykC,EAAUpoB,EAASooB,QAAQh1B,MAAM,KAAKkjC,QAAO,SAAC0F,EAAaxS,GAC7D,IAAIgN,EAAepvB,EAAKrG,KAAKmnB,WAAW1/B,MACpC,SAAC0F,GAAD,OAAYA,EAAOm6B,gBAAkBmB;AAGzC,OADIgN,GAAcwF,EAAYntC,KAAK2nC,GAC5BwF,IACR;AACHr4C,KAAK+G,aAAaO,QAAQtH,KAAKod,KAAKshB,gBAAkB,mBAAoB,CACtE+F,QAASpoB,EAASooB,QAClB53B,KAAMwP,EAASxP,KACflJ,GAAI0Y,EAAS1Y,KAEjB3D,KAAKod,KAAKknB,eAAeG,qCAG7B,SAAmBn1B,EAAKk1B,EAAKld,GACzB,IAAI5b,EAAQ4D,EAAI3G,QAAQ67B;AACxBl1B,EAAI+e,aAAamW;AACjB,IAAI8T,EAAW5sC,EAAQ4b;AACvBgxB,EAAWA,EAAWhpC,EAAI4D,OAAS,EAAIolC,EAAW,EAAIhpC,EAAI4D,OAASolC,EACnEhpC,EAAIipC,SAASD,EAAU9T,2BAG3B,SAASC,GACDzkC,KAAK+G,aAAaP,QAAQxG,KAAKod,KAAK7Z,KAAO,sBAAwBvD,KAAKod,KAAKo7B,WAEjFx4C,KAAK+G,aAAaO,QACdtH,KAAKod,KAAK7Z,KAAO,kBACjBkhC,EAAQ5iB,KAAI,SAACgkB,GAAD,OAAYA,EAAOnB,iBAAevgB,QAAO,SAAClO,GAAD,OAAUA,yCAIvE,SAAoB4hC,EAAWl0C,GAC3BpE,MAAA4C,IAAInC,KAAM,kBAAmB63C,EAAU1b,SAAS,KAAMx4B,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,KAAKk+B,WAAal+B,KAAKk+B,iEAG3B,SAAAnmB,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,MAKkB4zB,GALlB,CAAAv0B,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,EAAA6wB,GAAA7wB,EAAAW,KAOIhZ,KAAK64C,SAPTxgC,EAAA2B,GAAA+G,SAAAjW,KAAAuN,EAAA2B,GAAA3B,EAAA6wB;AAAA,KAAA,GAAA,IAAA,MAAA,OAAA7wB,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,KAAKuc,QAAQ35B,KAAKod,KAAKuc,4CAHgB3d,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,KAAK6rC,WAAW9mC,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,SAASka;AAhBf,KAAA,GAAA,IAAA,MAAA,OAAA1hB,EAAAe,UAAArB,EAAA/X;;kKAqBA,WAAmB,IAAA6W,EAAA7W,KACT25C,EAAS;AAIf,OAHA35C,KAAKod,KAAKmV,SAAS3rB,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,IADsBpc,EAChBrtB,EAAMhQ,MAAAktB,EAAE,IADQoQ,EAAAC,EAEJkc;AAFI,IAEtB,IAAAnc,EAAAhjB,MAAA+iB,EAAAC,EAAAljB,KAAAojB,MAAwB,CAAA,IACd+c,EAAUb,EAAS,IADLrc,EAAA79B,MAGdg7C,GAAa,EAAAC,EAAAC,gBAAeH;AAElCvqC,EAAImf,WAAW,CAAE5tB,IAAKi5C,KAPJ,MAAA1c,GAAAR,EAAA1V,EAAAkW,GAAA,QAAAR,EAAAS,IAStB,OAAO/tB,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,KAAKmxB,oBAAoB4L,UAAW,OAAO;AACpD,GAAIn6C,KAAKod,KAAK8pB,oBAAqB,CAC/B,IAAM7qB,EAAWrc,KAAKod,KAAKmxB,oBAAoB5lB,OAC3C,KACA3oB,KAAKod,KAAK8pB;AAEd,GAAI7qB,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,KAAKuc,QAAQ35B,KAAKod,KAAKuc,4CAHY3d,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,KAAKmV,SAASrf,6BAGnD,WACI,IAAIqnC,EAAU,CACV1tC,KAAM,GACNm5B,UAAW,WACXwU,QAASx6C,KAAKy6C,iBACdC,SAAU,GACVC,YAAY,EACZC,aAAa;AAYjB,OAVI56C,KAAKH,MAAM0B,KAAK,+BAChBg5C,EAAU,CACN1tC,KAAM,GACNm5B,UAAW,WACXwU,QAASx6C,KAAKy6C,iBACdvmB,MAAO,IACPymB,YAAY,EACZC,aAAa,IAGd56C,KAAKod,KAAKqnB,QAAQ7jC,OAAO,CAAC25C,+BAGrC,WACI,OAAI,EAAAxyB,EAAAC,YAAmB,eACnBhoB,KAAKod,KAAK8pB,oBAA4B,aACnClnC,KAAKod,KAAKqnB,QAAQvxB,OAAS,KAAOlT,KAAKod,KAAKumB,YAAYzwB,OACzD,eACA,0CAGV,WACI,OAAOlT,KAAKod,KAAKqnB,QAAQvxB,OAAS,oCAGtC,WACI,OAAI,EAAA6U,EAAAC,aACGhoB,KAAKod,KAAKqnB,QAAQvxB,OAAS,GADX,gBACkC,mCAG7D,WACI,IAAIjS,EAAQ1B,MAAAqT,QAAQ5S,KAAKod,KAAKmV,UAAiCvyB,KAAKiB,KAA1BjB,KAAKod,KAAKmV;AAEpD,OAAKvyB,KAAKod,KAAKqnB,SAAYzkC,KAAKiB,MAEzB,EAAAitC,EAAAC,SAAQltC,EAAMjB,KAAKod,KAAKqnB,QAASzkC,KAAKod,KAAK7Z,KAAMvD,KAAKwB,UAAWxB,KAAKkK,OAFhC,uBAQjD,WAEI,OAAOlK,KAAKod,KAAKmV,SAASD,MAAM,MAAM3U,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,SACaxoB,EAAUjyB,GACfN,KAAKod,KAAK49B,cAAch7C,KAAKod,KAAK49B,aAAazoB,EAAUjyB,GAC7DN,KAAK+6C,wCAGT,SACWxoB,EAAUkV,GACbznC,KAAKod,KAAK69B,YAAYj7C,KAAKod,KAAK69B,WAAW1oB,EAAUkV,GACzDznC,KAAK+6C,0CAGT,SACaxoB,EAAUkV,GACfznC,KAAKod,KAAK89B,cAAcl7C,KAAKod,KAAK89B,aAAa3oB,EAAUkV,GAC7DznC,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,MAAM/L,QAAQ,OAAOgM,OAAS1rC,EAAAA,QAAOyrC,IAAIF,GAAU7L,QAAQ,OAAOgM,OACvEtpC,EAAOpC,EAAAA,QAAO2rC,SAASvnC,EAAM,WAAWwnC,SAExCC,EACF7rC,EAAAA,QAAOyrC,IAAIF,GAAU7L,QAAQ,OAAOgM,OAAS1rC,EAAAA,QAAOyrC,IAAID,GAAS9L,QAAQ,OAAOgM;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,EAAKsmB,MAAQ,SAGhFwf,4BAGX,WACI,IADSnf,EACHif,EAAU,GADPhf,EAAAC,EAEM98B,KAAKkK,MAAMwe,WAAW1oB,KAAKod,KAAK7Z;AAFtC,IAGT,IAAAs5B,EAAAhjB,MAAA+iB,EAAAC,EAAAljB,KAAAojB,MAA4B,CAAA,IAAA5E,EAAjB30B,EAAiBo5B,EAAA79B,MACpBgL,EAAM,QAAAouB,EAAG30B,EAAM6K,gBAAT,IAAA8pB,OAAA,EAAGA,EAAgBpuB;AAC7B,GAAIA,EAAQ,CACHxK,MAAAuD,QAAQiH,KAASA,EAAS,CAACA;AADxB,IAAAkzB,EAAAC,EAAAJ,EAGkB/yB;AAHlB,IAGR,IAAAmzB,EAAArjB,MAAAojB,EAAAC,EAAAvjB,KAAAojB,MAAkC,CAAA,IAAAxB,EAAvB6B,EAAuBH,EAAAl+B;AAC9B88C,EAAQ3wC,KAAK,CAET1H,MAAO45B,EAGPjZ,OAAM,QAAAoX,EAAE/3B,EAAMmH,eAAR,IAAA4wB,OAAA,EAAEA,EAAeh4B,KAEvBg5B,KAAM/4B,EAAMqJ,QAXZ,MAAAwwB,GAAAH,EAAA/V,EAAAkW,GAAA,QAAAH,EAAAI,OALP,MAAAD,GAAAR,EAAA1V,EAAAkW,GAAA,QAAAR,EAAAS,IAsBT,OAAOue,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,SAACy4B,GAAD,OAAmBA,EAAEzwB,OAASsS,QAE1Dra,EAAKq3C,eAAiBr3C,EAAKqV,OAAOgK,QAAO,SAAC3gB,GACtC,GAAmB,kBAAfA,EAAMkH,KACV,OAAQ5F,EAAKo3C,aAAar3C,MAAK,SAACy4B,GAAD,OAAmBA,EAAEzwB,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,KAAK00B,YACL10B,KAAKk8C,aAAel8C,KAAKo8C,YACzBp8C,KAAKm8C,eAAiBn8C,KAAKma,OAAOgK,QAAO,SAAC3gB,GACtC,GAAmB,kBAAfA,EAAMkH,KACV,OAAQ+Y,EAAKy4B,aAAar3C,MAAK,SAACy4B,GAAD,OAAmBA,EAAEzwB,OAASrJ,EAAMqJ,YAG3E7M,KAAK00B,WAAa10B,KAAK00B,kCAG3B,SACmBlxB,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,KAAK0jB,aAAa;IAJM,CAC7B,IAAM0b,EAAmBx8C,KAAKk8C,aAAar6B,KAAI,SAACre,GAAD,OAAuBA,EAAMqJ;AAC5E7M,KAAKod,KAAK0jB,aAAa0b,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,KAAK2c,2CAJmB/d,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,EAAKo+B,YAAc,EAFTp+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,KAAKkjC,YACZljC,KAAKkjC,YAAc,IACnB+Z,EAAW,GAEXj9C,KAAKkjC,YAAc,EAAI4Z,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,KAAKkjC,cAAgBljC,KAAK88C,YAAc98C,KAAK49C,qCAG/E,WACI,OAAO59C,KAAKkjC,YAAcljC,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,SAAUviB,EAAGC,GACtB,OAAOD,EAAIC,GAERmiB,EAAKr9C,OAAOs9C,GAAM/5B,OAAOg6B,GAAY3zB,KAAK4zB,2BAGrD,WAGI,GADAp+C,KAAKkjC,YAAc5xB,SAAStR,KAAKkjC,YAAa,IAAM,EAChDljC,KAAKod,KAAKihC,WACV,OAAOr+C,KAAKod,KAAKihC,WAAWr+C,KAAKkjC,yCAIzC,WAGI,GADAljC,KAAKkjC,YAAc5xB,SAAStR,KAAKkjC,YAAa,IAAM,EAChDljC,KAAKod,KAAKihC,WACV,OAAOr+C,KAAKod,KAAKihC,WAAWr+C,KAAKkjC,uCAIzC,SACW6E,GACP,GAAa,QAATA,EAKJ,OAFA/nC,KAAKkjC,YAAc6E,EAEf/nC,KAAKod,KAAKihC,WACHr+C,KAAKod,KAAKihC,WAAWr+C,KAAKkjC,kBADrC,qCAxHuClnB,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,UAAAsyB,EAAA3Y,EAAA3Z,IAEVA,EAAK45C,SAAW,CAAC,UAAW,OAAQ,UAAW,WAC/C55C,EAAKo+B,YAAc;AACnB,IAAMyb,EAAiB75C,EAAK85C,kBAAkB95C,EAAKsY,KAAK+G;AAJ9C,OAMNrf,EAAKsY,KAAKupB,eACV7hC,EAAKs6B,OAAS,CACVvyB,KAAM/H,EAAKsY,KAAKupB,eAAe95B,KAC/BgY,MAAO/f,EAAKsY,KAAKupB,eAAe9hB,MAChC2hB,KAAMtjC,KAAKwD,MAAM5B,EAAKsY,KAAKupB,eAAeH,MAC1CC,QAAS3hC,EAAKsY,KAAKupB,eAAeF,QAClChC,QAASvhC,KAAKwD,MAAM5B,EAAKsY,KAAKupB,eAAelC,SAC7CrI,QAASl5B,KAAKwD,MAAM5B,EAAKsY,KAAKupB,eAAevK,SAC7CsK,WAAY5hC,EAAKsY,KAAKupB,eAAeD,YAGzC5hC,EAAKs6B,OAAS,CACVvyB,KAAM,KACNgY,MAAO,KACP2hB,KAAMjnC,MAAAktB,EAAE,IACRga,QAAS,QACThC,QAASllC,MAAAktB,EAAE,IACX2P,QAASuiB,EACTjY,WAAY,MAxBV5hC,iDA/Bd,WACI,MAAO,oCAAsC9E,KAAKkjC,kCAGtD,WACI,OAAO3jC,MAAAua,OAAAiH,SAAS/gB,KAAKL,KAAK2C,EAAE,8BAAgCtC,KAAKkjC,sCAGrE,WACI,OAAO3jC,MAAAqT,QAAQ5S,KAAKo/B,OAAOvyB,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,IAAjBwzB,EAAiBpyB,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAN;AAC1C,OAAQ0M,GACJ,IAAK,UACD7M,KAAKo/B,OAAOqF,QAAQ/V,WAAW3vB;AAC/B;AACJ,IAAK,OACDiB,KAAKo/B,OAAOoH,KAAK9X,WAAW3vB;AAC5B;AACJ,IAAK,UACGwzB,GACIhzB,MAAAuD,QAAQyvB,KAAWA,EAAWA,EAAS1Q,KAAI,SAACg9B,GAAD,OAASA,EAAIl7C,MAAIga,KAAK,MACrE3d,KAAKo/B,OAAOhD,QAAQr9B,GAASwzB,EAAS5uB,GAAK4uB,EAAS5uB,GAAK4uB,GAEzDvyB,KAAKo/B,OAAOhD,QAAQr9B,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,KAAKo/B,OAASp/B,KAAKo/B,6CAGvB,SACuBvyB,EAAM9N,GACzB,OAAQ8N,GACJ,IAAK,UACD7M,KAAKo/B,OAAOqF,QAAQpW,aAAatvB;AACjC;AACJ,IAAK,OACDiB,KAAKo/B,OAAOoH,KAAKnY,aAAatvB;AAC9B;AACJ,IAAK,iBACMiB,KAAKo/B,OAAOhD,QAAQr9B;AAC3B;AACJ,QACIQ,MAAA4C,IAAInC,KAAM,UAAY6M,EAAM,MAEpC7M,KAAKo/B,OAASp/B,KAAKo/B,yCAGvB,SACmBoF,EAAKld,GACpB,IAAI5b,EAAQ1L,KAAKo/B,OAAOqF,QAAQ97B,QAAQ67B;AACxCxkC,KAAKo/B,OAAOqF,QAAQpW,aAAamW;AACjC,IAAI8T,EAAW5sC,EAAQ4b;AACvBgxB,EACIA,EAAWt4C,KAAKo/B,OAAOqF,QAAQvxB,OACzB,EACAolC,EAAW,EACTt4C,KAAKo/B,OAAOqF,QAAQvxB,OACpBolC,EACZt4C,KAAKo/B,OAAOqF,QAAQ8T,SAASD,EAAU9T,GACvCxkC,KAAKo/B,OAASp/B,KAAKo/B,qCAGvB,SACe0f,EAAWxwC,GACtB,IAAMywC,EAAWlgD,OAAOugC,OAAO9wB,GAAW1N,OAAO/B,OAAOugC,OAAO0f,IAC3DvZ,EAAQ;AACZwZ,EAASn4C,SAAQ,SAACuR,GACdA,EAAKvR,SAAQ,SAACoO,GACVuwB,EAAM7W,WAAW,CAAEnrB,KAAMyR,EAAIzR,KAAMsJ,KAAMmI,EAAInI,aAGrDtN,MAAA4C,IAAInC,KAAM,qBAAsBulC,4BAGpC,SACUnG,EAAQ10B,GACdnL,MAAA4C,IAAInC,KAAM,UAAY0K,EAAM00B,GAC5Bp/B,KAAKo/B,OAASp/B,KAAKo/B,qCAGvB,SACe4f,EAAMjT,GAOjB,IANA,IAAIpW,EAAS,GAET9iB,EAAI,EACJosC,EAAc,KACdC,EAAiB,KAErBn6B,EAAA,EAAAo6B,EAAwCtgD,OAAOqwC,QAAQlvC,KAAKo/B,OAAOhD,SAAnErX,EAAAo6B,EAAAjsC,OAAA6R,IAA6E,CAAxE,IAAAq6B,EAAAC,EAAAF,EAAAp6B,GAAA,GAAOu6B,EAAPF,EAAA,GAAmBtsB,EAAnBssB,EAAA,GACGG,EAAkBD,EAAW7vC,MAAM,KAAKyD,OAAS,EAAI,EAAI,GAGxDosC,EAAW32C,QAAQ,MAAQ,GAAK22C,EAAW7vC,MAAM,KAAK8vC,IAAoBxT,GACpE,WAANA,IAA+C,GAA5BuT,EAAW32C,QAAQ,OAAes2C,KAEtDA,EAAcpsC,IAIbysC,EAAW32C,QAAQ,MAAQ,GAAK22C,EAAW7vC,MAAM,KAAK8vC,IAAoBP,GAClE,WAARA,IAAiD,GAA5BM,EAAW32C,QAAQ,QAEzCgtB,EAAO2pB,GAAcxsB,SACd9yB,KAAKo/B,OAAOhD,QAAQkjB,GAC3BJ,EAAiBrsC,GAErBA,IAGJ,IAAI2sC,EAAa3gD,OAAOqwC,QAAQlvC,KAAKo/B,OAAOhD,SACxCqjB,EAAY5gD,OAAOqwC,QAAQvZ,IAE/BspB,EAAcC,EAAiBD,EAAcA,EAAc,EAAIA,GAC7C,IAAGA,EAAc,GAEnCO,EAAWlD,OAAXp8C,MAAAs/C,EAAU,CAAQP,EAAa,GAArBr+C,OAAAgyB,EAA2B6sB,KAGrCz/C,KAAKo/B,OAAOhD,QAAUv9B,OAAO6gD,YAAYF,GACzCx/C,KAAKo/B,OAASp/B,KAAKo/B,wCAGvB,SAAkBuf,GAAgB,IAAAl7B,EAAAzjB;AAC9B,OAAK2+C,GACL9/C,OAAO8H,KAAKg4C,GAAgB/3C,SAAQ,SAACud,GAC5BV,EAAKvZ,MAAM8xB,YAAYvY,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,KAAKqpB,wCAGrB,WAAyB,IAAA3hC,EAAA9E,KACf4/C,EAAuB,CACzB,OACA,SACA,QACA,QACA,YACA,kBACA,mBACA,WAEEC,EAAqB,CAAC,WAAY,kBAAmB,mBAAoB;AAE/E,GAAqB,UAAjB7/C,KAAKymC,SAA+C,YAAxBzmC,KAAKod,KAAK0iC,UAAyB,CAC/D,IAAMC,EAAqB//C,KAAKod,KAAKopB,KAAK3kB,KAAI,SAAC2iB,GAAD,OAASA,EAAIE;AAC3D,OAAO1kC,KAAKod,KAAKqnB,QAAQtgB,QACrB,SAACqgB,GAAD,OACKub,EAAmBj+C,SAAS0iC,EAAIE,gBAC7Bkb,EAAqB99C,SAAS0iC,EAAI95B,SACrC5F,EAAKsY,KAAKgiB,OAAOzW,OAAO,gBAAiB6b,EAAIE,kBAG1D,MAA4B,SAAxB1kC,KAAKod,KAAK0iC,UACH9/C,KAAKod,KAAKqnB,QAAQtgB,QACrB,SAAC0hB,GAAD,OACIga,EAAmB/9C,SAAS+jC,EAAOn7B,QAClC5F,EAAKsY,KAAKgiB,OAAOzW,OAAO,gBAAiBkd,EAAOnB,kBAGzDnlC,MAAAqT,QAAQ5S,KAAKod,KAAKgiB,QAAgBp/B,KAAKod,KAAKqnB,QACzCzkC,KAAKod,KAAKqnB,QAAQtgB,QACrB,SAAC0hB,GAAD,OAAa/gC,EAAKsY,KAAKgiB,OAAOzW,OAAO,gBAAiBkd,EAAOnB,0CAIrE,WACI,MAC4B,SAAxB1kC,KAAKod,KAAK0iC,YACQ,UAAjB9/C,KAAKymC,SAAwC,YAAjBzmC,KAAKymC,gCAI1C,SACQsF,EAAIiT,GACR,IAAI5f,EAASp/B,KAAKod,KAAKgiB,OACnB4gB,EAAS5gB,EAAOz2B,QAAQy2B,EAAOzW,OAAO,gBAAiBq2B,IACvDiB,EAAS7gB,EAAOz2B,QAAQy2B,EAAOzW,OAAO,gBAAiBojB,IACvDmU,EAAU9gB,EAAOzW,OAAO,gBAAiBq2B;AAC7C5f,EAAOkd,OAAO0D,EAAQ,GACtB5gB,EAAOkd,OAAO2D,EAAQ,EAAGC,GACzBlgD,KAAKod,KAAK+iC,UAAU/gB,EAAQp/B,KAAKymC,4CAvDgCzqB,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,EAAKs3B,QAAUt3B,EAAKsY,KAAKgiB,OAAOhD,QAChCt3B,EAAKktC,aAAeltC,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,GACZhlB,EAAUp8B,KAAKkK,MACdwe,WAAW1oB,KAAKod,KAAK7Z,MACrB4gB,QAAO,SAACmZ,GAAD,OAAO6jB,EAAYr/C,SAASw7B,EAAE5yB;AAC1C02C,EAAUl2C,KAAK,CACX2B,KAAM7M,KAAKod,KAAK7Z,KAChB29B,gBAAiBlhC,KAAKL,KAAK2C,EAAE,QAAUtC,KAAKod,KAAK7Z,MACjD4W,OAAQiiB,EAAQjY,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,MAIhCiY,EAAQx1B,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,SAACmZ,GAAD,OAAOzmB,EAAK8qC,WAAWrkB,EAAG6jB,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,KACVq0B,gBAAiBugB,EACjBtnC,OAAQunC,QAKjBN,4BAGX,SAAW9jB,EAAG6jB,EAAaS,GACvB,SAAI5hD,KAAKihD,eAAgBE,EAAYr/C,SAASw7B,EAAE5yB,UAC3C1K,KAAKihD,eAAgBjhD,KAAKod,KAAKoiB,kBAAkB19B,SAAS8/C,EAAU,IAAMtkB,EAAEzwB,sCAKrF,WAAkB,IAAA4W,EAAAzjB,KAEVsP,EAAM,GACNuyC,EAAa;AA2CjB,OAzCAhjD,OAAOqwC,QAAQlvC,KAAKo8B,SAASx1B,SAAQ,SAAC02B,GAClC,IAAInZ,EAASmZ,EAAE,GAAGx7B,SAAS,KAAOw7B,EAAE,GAAG7tB,MAAM,KAAO6tB,EAAE,GAClD/5B,EAAOhE,MAAAuD,QAAQqhB,GAAUA,EAAO,GAAKV,EAAKrG,KAAK7Z,KAC/CC,EAAQjE,MAAAuD,QAAQqhB,GAAWA,EAAOjR,OAAS,EAAIiR,EAAO,GAAKA,EAAO,GAAMmZ,EAAE,GAC1EwkB,EAAaviD,MAAAuD,QAAQqhB,GACnBA,EAAOjR,OAAS,EACZiR,EAAO,GACPA,EAAO,GACXV,EAAKrG,KAAK7Z,KACZw+C,EAAYt+B,EAAKvZ,MAAM8xB,YAAYz4B,EAAMC,GACvCigB,EAAKvZ,MAAM1G,MAAMD,EAAMC,GACvB;AACDu+C,IACLA,EAAUp3C,QACNo3C,EAAUp3C,SAA8B,oBAAnBo3C,EAAUr3C,KACzBq3C,EAAUp3C,QAAQ2nB,MAAM,MACxByvB,EAAUp3C,QACG,SAAnBo3C,EAAUr3C,KACVq3C,EAAUxvB,SAAW9O,EAAKu+B,WAAWr5B,OAAO,KAAM2U,EAAE,IAC9C7Z,EAAKu+B,WAAWr5B,OAAO,KAAM2U,EAAE,IAC/BA,EAAE,GACkB,aAAnBykB,EAAUr3C,MAAuB4yB,EAAE,IAAe,YAATA,EAAE,IAClDykB,EAAUxvB,SAAW+K,EAAE,GAClB7tB,MAAM,KACNoS,KAAI,SAACle,GAAD,OAAQ8f,EAAKvW,MAAMsZ,WAAWu7B,EAAUp3C,QAAQpH,KAAMI,MAC3DJ,IAASkgB,EAAKrG,KAAK7Z,OAAMw+C,EAAUxvB,SAAWwvB,EAAUxvB,SAAS,KAClEwvB,EAAUxvB,SAAW+K,EAAE,GAC1B7Z,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,IAAjBwzB,EAAiBpyB,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;AACpEwzB,GACIhzB,MAAAuD,QAAQyvB,KAAWA,EAAWA,EAAS1Q,KAAI,SAACg9B,GAAD,IAAAsD;AAAA,OAAA,QAAAA,EAAStD,EAAIl7C,UAAb,IAAAw+C,EAAAA,EAAmBtD,KAAKlhC,KAAK,MAC5E3d,KAAKo8B,QAAQ8lB,GAAgB3vB,EAAS5uB,GAAK4uB,EAAS5uB,GAAK4uB,GAEzDvyB,KAAKo8B,QAAQ8lB,GAAgB,KAGjCliD,KAAKgyC,aAAehyC,KAAKkhD,kBACzBlhD,KAAKod,KAAKyjC,sBAAsB,UAAWqB,EAAc3vB,gCAG7D,SACcxzB,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,KAAKo8B,QAAQ8lB,GACpBliD,KAAKo8B,QAAUp8B,KAAKo8B,QAEpBp8B,KAAKod,KAAKglC,uBAAuB,UAAWF,GAE5CliD,KAAKgyC,aAAehyC,KAAKkhD,qDAG7B,SACoBniD,GAAO,IAAAy9B,EAAAx8B;AACvBT,MAAA4C,IAAInC,KAAM,UAAWjB,GACrBiB,KAAKqiD,YAAYz7C,SAAQ,SAACqP,GACtB1W,MAAA4C,IAAIq6B,EAAM,UAAYvmB,EAAKpJ,KAAM9N,6BAIzC,SACQgtC,EAAIiT,GACRh/C,KAAKod,KAAKklC,eAAetD,EAAMjT,GAC/B/rC,KAAKo8B,QAAUp8B,KAAKod,KAAKgiB,OAAOhD,QAChCp8B,KAAKgyC,aAAehyC,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,MAAM8xB,YAAYh8B,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,SACkB5a,GACd/nC,KAAKkjC,YAAc6E,EACf/nC,KAAKod,KAAKihC,YAAYr+C,KAAKod,KAAKihC,WAAWtW,sCAPV/rB,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,KAAK8lB,aAAe,0BAGpC,WACI,OAAOljC,KAAKod,KAAK8lB,cAAgBljC,KAAKod,KAAK8/B,0BAG/C,WAEQl9C,KAAKod,KAAKihC,YAAYr+C,KAAKod,KAAKihC,WAAWr+C,KAAKod,KAAK8lB,YAAc,2BAG3E,WAEQljC,KAAKod,KAAKihC,YAAYr+C,KAAKod,KAAKihC,WAAWr+C,KAAKod,KAAK8lB,YAAc,uBAG3E,WAEQljC,KAAKod,KAAK2f,MAAM/8B,KAAKod,KAAK2f,OAC1B/8B,KAAKod,KAAK2c,QAAU/5B,KAAKod,KAAKylC,iBAAiB7iD,KAAKod,KAAK2c,2CA7BzD/d,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,CACL5Z,OAAQ,SAAUn9B,EAAOzE,GAIrB,OAHIiB,KAAKf,IAAI,oCACTe,KAAKmC,IAAI,eAAiBqB,EAAOzE,GAE9BiB,KAAKmC,IAAI,UAAYqB,GAAO,IAEvCqjC,KAAM,WAAY,IACVrjC,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,CAC9DniB,UAAWjiC,MAAMC,OAAOC,QAAQ,qBAChCyjD,UAAW3jD,MAAMC,OAAOC,QAAQ,aAChCyN,MAAO3N,MAAMC,OAAOC,UACpBE,KAAMJ,MAAMC,OAAOC,UACnBmkD,kBAAmB,KACnBv+C,KAAM,GACN49B,YAAa,GACb4gB,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,SAASkhC,MAAM,WAC5BnhC,IAAKvB,MAAMwB,SAAS,QAAS,cAAe,cAAe,QAAQ,WAC/D,IAAIsC,EAAO8gD,EAAelhB,EAAaniC;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,WADPmiC,EAAcjjC,KAAKf,IAAI,gBAEH,QAAhBgkC,IACAniC,GAAO,WAAamiC,GAAejjC,KAAKf,IAAI,eAAiB,MAI3C,IAAtB6B,EAAI6H,QAAQ,OACZ7H,EAAMA,EAAIsO,QAAQ,IAAK,MAEpBtO,KAEXG,KAAM6V,GAAG2V,EAAE,IACXgY,QAAS3tB,GAAG/V,SAAS,QAAQ,WACzB,IAAI0jC,EAAS2f;AACb,OAAKpkD,KAAKf,IAAI,UAGdmlD,EAAWpkD,KAAKf,IAAI,sBAIpBwlC,EAAU3tB,GAAG2V,EAAE,IACfrjB,EAAAA,QAAEe,KAAKi6C,GAAU,SAAUv9C,EAAKoP,GAC5B,OAAOwuB,EAAQ/V,WAAW7nB,MAEvB49B,GAVI3tB,GAAG2V,EAAE,OAYpB43B,kBAAmBvtC,GAAG/V,SAAS,WAAW,WACtC,IAAI0jC,EAAS9kC,EAAM2kD,EAAoBV;AAEvC,OADAA,EAAoB5jD,KAAKf,IAAI,uBAEzBwlC,EAAUzkC,KAAKf,IAAI,WACnBU,EAAOK,KAAKf,IAAI,QAChBqlD,EAAqB,GACrBl7C,EAAAA,QAAEe,KAAKs6B,GAAS,SAAC59B,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,gCAW7BikC,YAAa,EACbyhB,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,SAAUlrB,EAAQhV,GAC5B,MAAe,sBAAXgV,EACOhV,EAAOgV,OAAOmrB,KAAK3yB,KAAKnyB,KAAxB2kB,CAA8BA,EAAOxM,MAErCnY,KAAK+kD,WAAWprB,EAAQhV,IAGvCqgC,SAAU,WACN,OAAOhlD,KAAKmC,IAAI,cAAenC,KAAKf,IAAI,eAAiB,IAE7DgmD,aAAc,WACV,OAAOjlD,KAAKmC,IAAI,cAAenC,KAAKf,IAAI,eAAiB,IAE7DimD,WAAY,SAAUnd,GAClB,OAAO/nC,KAAKmC,IAAI,cAAe4lC,IAEnCod,WAAY,WAAY,IAChBpB,EAAG96C,EAAMiE,EADOsvB,EAAAx8B;AAKpB,OAHAiJ,EAAOjJ,KACP+jD,EAAI/jD,KAAKf,IAAI,aACbiO,EAAQlN,KAAKf,IAAI,SACVe,KAAKf,IAAI,gBAAgBgG,MAAK,SAACgsC,GAClC,OAAIhoC,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,EACF0oC,sBAAsB,CAACV,GAAU,WAAYoU,EAAW,IACxDpgD,MAAK,SAAU8nB,GACZ,GACuB,oBAAZ6kB,SACK,OAAZA,QAEA,OAAO3oC,EACFhK,IAAI,WACJ4yC,SAAS9kB,EAAM,4BAOzCyP,EAAKmV,sBAAsB,CAACV,IAAUhsC,MAAK,SAAU8nB,GACxD,GAAuB,oBAAZ6kB,SAAuC,OAAZA,QAClC,OAAO3oC,EAAKhK,IAAI,WAAW4yC,SAAS9kB,EAAM,0BAM9Du4B,WAAY,WAAY,IAAA5oB,EAAA18B;AACpB,OAAOA,KAAKf,IAAI,gBAAgBgG,MAAK,SAACgsC,GAClC,OAAOvU,EAAK6oB,sBAAsBtU;eC1OlDvyC,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,GACdtP,KAAKf,IAAI,SAASovB,aAAa/e;AAE/B,IAAIuR,EAAY7gB;AAChB6lD,YAAW,WACP,IAAIC,EAAQjlC,EAAUowB,SAAWpwB,EAAUowB,QAAQnxB,cAAc;AAC7DgmC,IACAA,EAAM9lC,QACN8lC,EAAMhwB,UAEX;;MCxDQv2B,MAAMyc,UAAU5c,OAAO,CAE1CiL,QAASyM,GAAG2V,EAAE,IAEds5B,mBAAoBjvC,GAAG/V,SAAS,cAAc,WAC1C,IAAI8R,EAAGE,EAAKxI,EAAQF,EAAS27C;AAG7B,IAFA37C,EAAUrK,KAAKf,IAAI,WACnB+mD,EAAMlvC,GAAG2V,EAAE,IACN5Z,EAAI,EAAGE,EAAM1I,EAAQ6I,OAAQL,EAAIE,EAAKF,IACvCtI,EAASF,EAAQwI,GACjBmzC,EAAI96C,KAAK,CACLnM,MAAOwL;AAGf,OAAOy7C,KAEXC,cAAenvC,GAAGgtC,SAAS,kCAAkC,WACzD,IAAIjxC,EAAG2qC,EAAGzqC,EAAKzD,EAAK02C,EAAK5I;AAGzB,IADAA,EAAU,GACLI,EAAI3qC,EAAI,EAAGE,GAFhBizC,EAAMhmD,KAAKf,IAAI,uBAEWiU,OAAQL,EAAIE,EAAKyqC,IAAM3qC,EAC7CvD,EAAM02C,EAAIxI,GACVJ,EAAQlyC,KAAKlL,KAAKmC,IAAI,WAAaq7C,EAAGluC,EAAIvQ;AAE9C,OAAOq+C,KAGX8I,UAAU,EAAAC,EAAA7jD,GAAE,gBAEZ8jD,SAAS,EAAAD,EAAA7jD,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,QAGhD8nC,KAAM,WACF,GAAI7mC,KAAKf,IAAI,QACT,OAAOe,KAAK6mC,KAAK7mC,KAAKf,IAAI;eCtD1CP,OAAA,2BAAA,CAAA,UAAA,6CAAA,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,cCTAR,OAAA,6CAAA,CAAA,UAAA,gEAAA,SAAAC,EAAA4nD,GAGA1nD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAsnD,EAAArnD,cCTAR,OAAA,wCAAA,CAAA,UAAA,2DAAA,SAAAC,EAAA6nD,GAGA3nD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAunD,EAAAtnD;ACTAR,OAAA,gCAAA,CAAA,UAAA,mDAAA,SAAAC,EAAA8nD,GAGA5nD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAwnD,EAAAvnD;MCGuBK,MAAMyc,UAAU5c,OAAO,CAC1CQ,QAASL,MAAMC,OAAOC,UACtByjD,UAAW3jD,MAAMC,OAAOC,UACxB0jD,aAAc5jD,MAAMC,OAAOC,UAC3BE,KAAMJ,MAAMC,OAAOC,UACnBuuB,cAAezuB,MAAMC,OAAOC,UAC5BinD,iBAAkB,WACd,OAAO,EAAAC,EAAAznD,SAAE,IAAMc,KAAKf,IAAI,gBAAgB2nD,SAAS,OASrDjkD,OAAQpD,MAAMV,OAAO+J,OAAO,CACxBw6C,QAAQ,EACRC,KAAK,EACLC,MAAM,EACN91C,SAAS,IAEbq5C,mBAAoB/vC,GAAG/V,UAAS,WAE5B,MAA6D,OAAzDf,KAAKf,IAAI,+CAKjB6nD,uBAAwBhwC,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,QACbsD,iBAAkBjwC,GAAG/V,UAAS,WAC1B,MAAO,CACHwrC,MAAOvsC,KAAKf,IAAI,iCAGxB+nD,kBAAmB,WAAY,IAAAliD,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,EAAA0nD,EAAAznD,SAAE,UAAU+nD,MAAM,QACXniD,EAAKi1B,SAELj1B,EAAK7F,IAAI,iBAAiB0K,QAAQ7E,EAAK7F,IAAI,QAAQqD,EAAE,iBAAkB,CAC1E2rB,WAAW,QAK3BssB,QAAS,CACL2M,YAAa,SAAUnlC,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,yBAG5DkoD,eAAgB,SAAUC,GACtB,OAAOpnD,KAAKmC,IAAI,cAAeilD,IAEnCz4C,KAAM,WAEF,OADA3O,KAAKmC,IAAI,YAAY,GACdnC,KAAK04B,KAAK,SAErBqB,MAAO,WAEH,IADA,EAAA4sB,EAAAznD,SAAE,UAAU+nD,MAAM,QACdjnD,KAAKf,IAAI,SACT,OAAOe,KAAK+5B,SAGpB8M,KAAM,WAAY,IACVwgB,EAAU7jD,EAAO+/C,EAAU1wC,EAAGE,EAAKlS,EAAiBoL,EAD1C4K,EAAA7W;AA8Cd,GA5CAqnD,EAAW,GAEPxmD,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,gBAETooD,EAAQ,OAAarnD,KAAKf,IAAI,uBAC9BooD,EAAQ,IAAUrnD,KAAKf,IAAI,oBAC3BooD,EAAQ,KAAWrnD,KAAKf,IAAI,qBAC5BooD,EAAQ,QAAcrnD,KAAKf,IAAI,0BAE/BooD,EAAQ,OAAarnD,KAAKf,IAAI,2BAC9BooD,EAAQ,IAAUrnD,KAAKf,IAAI,wBAC3BooD,EAAQ,KAAWrnD,KAAKf,IAAI,yBAC5BooD,EAAQ,QAAcrnD,KAAKf,IAAI,6BAEnCooD,EAAQ,YAAkBrnD,KAAKf,IAAI,eACnCooD,EAAQ,MAAYrnD,KAAKf,IAAI,0BAC7BooD,EAAQ,mBAAyBrnD,KAAKf,IAAI,uCAC1CooD,EAAQ,kBAAwBrnD,KAAKf,IAAI,sCACzCooD,EAAQ,YAAkBrnD,KAAKf,IAAI,gCACnCooD,EAAQ,oBAA0BrnD,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,KAAMomD,IAEKpiD,MAAK,WAEhB,OAAI4R,EAAK5X,IAAI,SACF4X,EAAKmwC,oBAERnwC,EAAK5X,IAAI,WACT,EAAA0nD,EAAAznD,SAAE,UAAU+nD,MAAM,QACXpwC,EAAKkjB,SAELljB,EAAK5X,IAAI,iBAAiB0K,QAC7BkN,EAAK5X,IAAI,QAAQqD,EAAE,iBACnB,CACI2rB,WAAW;;MChShCq5B,EAAAA;;MCAAC,EAAAA;eCFf7oD,OAAA,8BAAA,CAAA,UAAA,4CAAA,SAAAC,EAAA6oD,GAGA3oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAuoD,EAAAtoD,cCTAR,OAAA,mCAAA,CAAA,UAAA,iDAAA,SAAAC,EAAA8oD,GAGA5oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAwoD,EAAAvoD,cCTAR,OAAA,wCAAA,CAAA,UAAA,sDAAA,SAAAC,EAAA+oD,GAGA7oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAyoD,EAAAxoD,cCTAR,OAAA,yCAAA,CAAA,UAAA,uDAAA,SAAAC,EAAAgpD,GAGA9oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA0oD,EAAAzoD,cCTAR,OAAA,iCAAA,CAAA,UAAA,+CAAA,SAAAC,EAAAipD,GAGA/oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA2oD,EAAA1oD,cCTAR,OAAA,wCAAA,CAAA,UAAA,sDAAA,SAAAC,EAAAkpD,GAGAhpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA4oD,EAAA3oD,cCTAR,OAAA,2BAAA,CAAA,UAAA,yCAAA,SAAAC,EAAAmpD,GAGAjpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA6oD,EAAA5oD,cCTAR,OAAA,6BAAA,CAAA,UAAA,2CAAA,SAAAC,EAAAopD,GAGAlpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA8oD,EAAA7oD,cCTAR,OAAA,6BAAA,CAAA,UAAA,2CAAA,SAAAC,EAAAqpD,GAGAnpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA+oD,EAAA9oD,cCTAR,OAAA,oCAAA,CAAA,UAAA,kDAAA,SAAAC,EAAAkpD,GAGAhpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA4oD,EAAA3oD,cCTAR,OAAA,kCAAA,CAAA,UAAA,gDAAA,SAAAC,EAAAspD,GAGAppD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAgpD,EAAA/oD,cCTAR,OAAA,0CAAA,CAAA,UAAA,wDAAA,SAAAC,EAAAupD,GAGArpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAipD,EAAAhpD,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,cCTAR,OAAA,0CAAA,CAAA,UAAA,wDAAA,SAAAC,EAAAwpD,GAGAtpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAkpD,EAAAjpD,cCTAR,OAAA,oCAAA,CAAA,UAAA,kDAAA,SAAAC,EAAAypD,GAGAvpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAmpD,EAAAlpD,cCTAR,OAAA,0BAAA,CAAA,UAAA,wCAAA,SAAAC,EAAA0pD,GAGAxpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAopD,EAAAnpD,cCTAR,OAAA,+BAAA,CAAA,UAAA,6CAAA,SAAAC,EAAA+oD,GAGA7oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAyoD,EAAAxoD,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,iCAAA,CAAA,UAAA,+CAAA,SAAAC,EAAA4pD,GAGA1pD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAspD,EAAArpD,cCTAR,OAAA,iCAAA,CAAA,UAAA,+CAAA,SAAAC,EAAA6pD,GAGA3pD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAupD,EAAAtpD,cCTAR,OAAA,uCAAA,CAAA,UAAA,qDAAA,SAAAC,EAAA8pD,GAGA5pD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAwpD,EAAAvpD,cCTAR,OAAA,uCAAA,CAAA,UAAA,qDAAA,SAAAC,EAAAgpD,GAGA9oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA0oD,EAAAzoD;MCWoBK,MAAMyc,UAAU5c,OAAOskD,EAAAA,QAAW,CAClDliB,UAAWjiC,MAAMC,OAAOC,QAAQ,qBAChCipD,eAAgBnpD,MAAMC,OAAOC,UAE7BoH,IAAK,KAELxD,MAAO,KAEPslD,SAAS,EACT1lB,YAAa,GACbC,YAAa,EACbwjB,iBAAkB,WACd,OAAO1mD,KAAK4oD,mBAEhBA,gBAAiB,WACb,IAAIC,EAAa5/C,EAAM+nC;AAGvB,GAFA6X,EAAc,CAAC,MAAO,SACtB7X,EAAWhxC,KAAKf,IAAI,YAKpB,OADAgK,EAAOjJ,KACAoJ,EAAAA,QAAEe,KAAK0+C,GAAa,SAAUhiD,EAAKoP,GACtC,IAAI6yC;AACJ,MAAM7yC,KAAS+6B,GAKf,OAFY/nC,EAAKhK,IAAIgX,MACrB6yC,EAAY9X,EAAS/6B,IAEVhN,EAAK9G,IAAI8T,EAAM6yC,QAD1B,MAINC,SAAS,eAAgB,kBAC3BC,OAAQzpD,MAAMwB,SAAS,QAAQ,WAC3B,MAAO,SAAWf,KAAKf,IAAI,WAE/BgC,KAAM1B,MAAMwB,UAAS,eACrBkoD,WAAY1pD,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,EAAEmF,MAAM,CACdpoD,IAAKd,KAAKmpD,YACVtoD,OAAQb,KAAKopD,cAAgBppD,KAAKopD,cAAgB,SAE9CnkD,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,EAAMwL,YACNvkD,EAAK3C,IAAI,OAAQ2C,EAAKwkD,iBAAiBzL,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,EAAKoyC,aACAhkD,MAAK,WAChB,IAAI4b;AACJ,OAAIhK,EAAK5X,IAAI,aACT4hB,EAAY0oC,EAAAA,QAAU3gD,OAAO,CACzBnH,QAASoV,EAAK5X,IAAI,OAClByL,KAAM,QACN8+C,cAAc,EAAA7C,EAAAznD,SAAE,kBAEViD,IAAI,OAAQ0U,EAAK5X,IAAI,cACxByG,EAAQ,CACX+jD,MAAO5oC,EAAU5hB,IAAI,SAASyqD,cAC9Bx1B,MAAO,OAGJxuB,EACHmR,EAAK2tC,sBAAsB3tC,EAAK5X,IAAI,WAAY4X,EAAK5X,IAAI,mBAM7E0qD,WAAYpqD,MAAMwB,UAAS,WAAY,IAAA0iB,EAAAzjB;AACnC,OAAO,IAAI8W,GAAGrR,KAAKwC,SAAQ,SAACvC,EAASwC,GACjC,IAAI8B,EAASmO;AAGb,OAFAnO,EAAUyZ,EAAKwlC,aACf9wC,EAAO,GACAnO,EAAQ/E,MAAK,WAChB,IAAI4gC,EAAQpB,EAASmlB,EAAU/2C,EAAGyqC,EAAGvqC,EAAKkxC,EAAM4F,EAAQ70C;AAIxD,IAHAmD,EAAKjN,KAAKuY,EAAKxkB,IAAI,YACnB2qD,EAAWnmC,EAAKxkB,IAAI,QACpBwlC,EAAUhhB,EAAKxkB,IAAI,WACd4T,EAAI,EAAGE,EAAM62C,EAAS12C,OAAQL,EAAIE,EAAKF,IAAK,CAG7C,IAFAmC,EAAM40C,EAAS/2C,GACfg3C,EAAS,GACJvM,EAAI,EAAG2G,EAAOxf,EAAQvxB,OAAQoqC,EAAI2G,EAAM3G,IACzCzX,EAASpB,EAAQ6Y,GACjBuM,EAAO3+C,KAAK8J,EAAI6wB;AAEpB1tB,EAAKjN,KAAK2+C,GAEd,OAAOnkD,EAAQyS,YAK3BgxC,UAAW,WACP,IAAIt2C,EAAGoD,EAAMlD,EAAK1P,EAAO8gD,EAAerjD;AAExC,GADAA,EAAMd,KAAKf,IAAI,OACf,CAOA,IAJAoE,EAAQrD,KAAKf,IAAI,YAEboE,EAAQrD,KAAK8pD,mBAEbzmD,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,IAEXgpD,gBAAiB,WACb,IAAItX,EAAOuX,EAAWplC;AACtB,IAAK3kB,KAAKf,IAAI,SAAU,CAWpB,IAAKuzC,KARL7tB,EAAS3kB,KAAKf,IAAI,kBAAkBA,IAAI,qBAAuB,IACnDmO,OACRuX,EAAOvX,KACHyC,SAAS0/B,QAAQ,WAAWp+B,OAAO,cACnC,IACAtB,SAASsB,OAAO,eAExB44C,EAAYjzC,GAAG2V,EAAE,IACH9H,EACN7N,GAAGwJ,UAAUqE,EAAO6tB,KACpBuX,EAAU7+C,KAAK,CACX2B,KAAM2lC,EACNzzC,MAAO4lB,EAAO6tB;AAI1B,OAAOuX,IAIfT,iBAAkB,SAAUroD,GAAM,IAAAu7B,EAAAx8B;AAC9B,OAAOiB,EAAK4gB,KAAI,SAAC7M,GACb,IAAI1F;AA+BJ,OA9BAA,EAAM,GACNzQ,OAAOqwC,QAAQl6B,GAAKpO,SAAQ,SAACuY,GACzB,IAAI6qC;AAEJ,OADAA,EAAO,GACHzqD,MAAAuD,QAAQqc,EAAI,KACZA,EAAI,GAAGvY,SAAQ,SAACmmB,GACZ,IAAIO;AACJ,OAAIP,EAAKK,QACG48B,GACJ,uDACAj9B,EAAKK,QACL,YACGL,EAAKjsB,KACZwsB,EAAckP,EAAKv9B,IAAI,aAAawuB,YAChCjsB,EAAAA,QAAUC,UAAY,IACtBsrB,EAAKjsB,KAEDkpD,GACJ,gCACA18B,EACA,IACAP,EAAKlgB,KACL,aAVD,KAaHyC,EAAI6P,EAAI,IAAM6qC,EAAOzqD,MAAAua,OAAAiH,SAASipC,GAAQ7qC,EAAI,IAE1C7P,EAAI6P,EAAI,IAAMA,EAAI,MAG3B7P,MAGfm1B,QAAS3tB,GAAG/V,SAAS,QAAQ,WACzB,IAAI0jC,EAAS2f;AACb,OAAKpkD,KAAKf,IAAI,UAGdmlD,EAAWpkD,KAAKf,IAAI,sBAIpBwlC,EAAU3tB,GAAG2V,EAAE,IACfrjB,EAAAA,QAAEe,KAAKi6C,GAAU,SAAUv9C,EAAKoP,GAC5B,OAAOwuB,EAAQ/V,WAAW7nB,MAEvB49B,GAVI3tB,GAAG2V,EAAE;;MCtPPltB,MAAMyc,UAAU5c,OAAO,CACpCO,KAAMJ,MAAMC,OAAOC,UACnBwqD,WAAY,mBACZp9C,KAAM,QACNlJ,GAAI,KACJ1C,KAAM,KAENipD,UAAW,KAEX9tB,QAAS,KACT+tB,YAAY,EACZhF,YAAY,EACZiF,WAAY7qD,MAAMwB,UAAS,WACvB,IAAIspD;AAKJ,OAJAA,EAAU,GACa,oBAAZzY,SAAuC,OAAZA,SAClCyY,EAAQn/C,KAAK,OAEVm/C,KAEX3D,iBAAkB,WACd,OAAI1mD,KAAKf,IAAI,aACFe,KAAKsqD,aAELtqD,KAAKuqD,aAGpBD,WAAY,WACR,IAAIJ,EAAWM,EAAYpuB,EAASnzB,EAAMnI;AAE1C,GADAopD,EAAYlqD,KAAKf,IAAI,aAcrB,OAVAm9B,EAAUp8B,KAAKf,IAAI,WACnB6B,EAAMd,KAAKf,IAAI,WAAairD,EACxB9tB,IACAouB,EAAa,GACbpuB,EAAQx1B,SAAQ,SAAUqP,GACtB,OAAOu0C,EAAWt/C,KAAK+K,EAAKpP,IAAM,IAAMoP,EAAKlX,UAEjD+B,GAAO,IAAM0pD,EAAW7sC,KAAK,MAEjC1U,EAAOjJ,KACAoJ,EAAAA,QAAEG,KAAK,CACVzI,IAAKA,EACL4J,KAAM,QAEPqyB,MAAK,SAAU97B,GACd,OAAOgI,EAAK9G,IAAI,OAAQlB,OAE9B8nD,SAAS,YAAa,WAExBwB,UAAW,WACP,IAAIE,EAAWxpD,EAAMyS,EAAQg3C,EAAUhgD;AAKvC,GAHwB,iBADxBggD,EAAW1qD,KAAKf,IAAI,WAEhByrD,EAAWxnD,KAAKwD,MAAMgkD,IAErBA,EAKL,OADAD,EAAYzqD,KAAKf,IAAI,kBAAmB,EAAA0nD,EAAAznD,SAAE,YAAac,KAAKixC,SACxD,eAAgByZ,GAChBh3C,EAAS1T,KAAK2qD,WAAWD,EAASzpD,KAAM,iBACxCjB,KAAK4qD,kBAAkBH,EAAUxrD,IAAI,GAAIyrD,EAASrB,WAAY31C,EAAOm3C,eAGzEngD,EAAO1K,KAAKf,IAAI,SAChBgC,EAAOjB,KAAK2qD,WAAWD,EAAUhgD,IACxBiO,cAAgB/W,MACd5B,KAAK4qD,kBAAkBH,EAAUxrD,IAAI,GAAIyL,EAAMzJ,EAAK4pD,aAEpD7qD,KAAK8qD,mBAAmBL,EAAWxpD,KAEhD8nD,SAAS,QAEX+B,mBAAoB,SAAUL,EAAWxpD,GACrC,IAAIgI;AAGJ,OAFAA,EAAOjJ,KACPyqD,EAAUM,QACH3hD,EAAAA,QAAEe,KAAKlJ,GAAM,SAAU4F,EAAKoP,GAC/B,IAAI+0C;AAQJ,OAPI/0C,EAAKy2B,QACL,EAAAia,EAAAznD,SAAE,OAAS+W,EAAKy2B,OAAS,SAASue,SAASR,IAE3C,EAAA9D,EAAAznD,SAAE,YAAY+rD,SAASR,IAE3BO,GAAe,EAAArE,EAAAznD,SAAE,eAAiB2H,EAAM,aAC3BokD,SAASR,GACfxhD,EAAK2hD,kBAAkBI,EAAa/rD,IAAI,GAAIgX,EAAKvL,KAAMuL,EAAK40C,iBAI3ED,kBAAmB,SAAUH,EAAW//C,EAAMzJ,GAAM,IAC5CiqD,EAAOC,EAAY1mB,EAAS5xB,EAAGu4C,EAAYC,EAAiB1gD,EAAS1B,EAAMqiD,EAD/BxmD,EAAA9E;AAEhD,OAAQ0K,GACJ,IAAK,QACDC,EAAU,CACN4gD,cAAe,CACXC,UAAW,eAGnBN,EAAQ,IAAIO,OAAOC,cAAcC,MAAMlB;AACvC;AACJ,IAAK,MAEG9/C,EADA3K,KAAKf,IAAI,WACCe,KAAKf,IAAI,WAET,CAEN2sD,UAAW,CACP13B,MAAO,OACP23B,OAAQ,QAEZA,OAAQ,KAGhBX,EAAQ,IAAIO,OAAOC,cAAcI,SAASrB,GACtCzqD,KAAKf,IAAI,aACTwsD,OAAOC,cAAcK,OAAOC,YAAYd,EAAO,UAAU,WACrD,IAAIe,EAAef,EAAMgB,eAAe;AACxCpnD,EAAK7F,IAAI,WAAT6F,CACImnD,EAAaj3C,IACblQ,EAAK7F,IAAI,QAAQgtD,EAAaj3C,IAAM,GAAG;AAGnD;AACJ,IAAK,OACDrK,EAAU,CAGNkhD,OAAQ,KAEZX,EAAQ,IAAIO,OAAOC,cAAcS,SAAS1B;AAC1C;AACJ,IAAK,SACD9/C,EAAU,CAGNkhD,OAAQ,KAEZX,EAAQ,IAAIO,OAAOC,cAAcU,YAAY3B;AAC7C;AACJ,IAAK,OACDS,EAAQ,IAAIO,OAAOC,cAAcW,SAAS5B,GAC1C9/C,EAAU,CACN6W,KAAM;AAEV;AAEJ,IAAK,QACD0pC,EAAQ,IAAIO,OAAOC,cAAcY,MAAM7B,GAEnC9/C,EADA3K,KAAKf,IAAI,WACCe,KAAKf,IAAI,WAET,CACNi1B,MAAO,IACP23B,OAAQ;AAGhB;AACJ,QAII,IAHApnB,EAAU,GACV6mB,EAAS,GACTz4C,EAAI,EACGA,EAAI5R,EAAKsrD,sBACZ9nB,EAAQv5B,KAAK2H,GACTA,EAAI,IACJy4C,EAAOz4C,EAAI,GAAK,IAEpBA;AAEJu4C,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,WAGAzgD,EADA3K,KAAKf,IAAI,WACCe,KAAKf,IAAI,WAET,CACN4sD,OAAQ,IACR33B,MAAO,OACPs4B,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,YAIRxsD,KAAKf,IAAI,qBACTosD,EAAkBrrD,KAAKf,IAAI,mBAC3B0L,EAAQ8hD,MAAQpB,EAAgBoB,MAChC9hD,EAAQ2gD,OAASD,EAAgBC,OACjC3gD,EAAQ+hD,OAAS,CACb51B,SAAU,MACV61B,UAAW,CACPC,SAAU,MAItBjiD,EAAQihD,UAAY,CAChBiB,KAAM,GACNC,IAAK,GACL54B,MAAO,MACP23B,OAAQ,OAEZX,EAAQ,IAAIO,OAAOC,cAAcqB,UAAUtC,GAC3CxhD,EAAOjJ,KACPyrD,OAAOC,cAAcK,OAAOC,YAAYd,EAAO,UAAU,WACrD,IAAI1mB,EAAKqa,EAAmBmO;AAC5B,GAAI/jD,EAAKhK,IAAI,oBACT,OAAOgK,EAAKgkD,iBAAiB/B,EAAMgB,iBAEnCrN,EAAMqM,EAAMgB,gBAEJh5C,OAAS,GAEM,OAAf2rC,EAAI,GAAG7pC,MACPwvB,EAAMqa,EAAI,GAAGhZ,OACmB,SAA5Bl7B,EAAQ6hD,OAAOhoB,EAAM,GACrB75B,EAAQ6hD,OAAOhoB,EAAM,GAAK,OAE1B75B,EAAQ6hD,OAAOhoB,EAAM,GAAK4mB,EAAW5mB,EAAM,IAE/CwoB,EAAO,IAAIvB,OAAOC,cAAcwB,SAASjsD,IACpCksD,WAAW1oB,GAChBymB,EAAMkC,KAAKJ,EAAMriD,OA6CzC,OAvCI3K,KAAKf,IAAI,oBACT0L,EAAQ0iD,UAAY,GAEpB1iD,EAAQ0iD,UADQ,WAAT3iD,EACa,CAChB4iD,SAAS,EACT9R,SAAU,KAGM,CAChB8R,SAAS,EACT9R,SAAU,KAGG,MAAjB7wC,EAAQ4iD,QACR5iD,EAAQ4iD,MAAQ,IAEhBvtD,KAAKf,IAAI,UACT0L,EAAQ4iD,MAAMC,SAAWxtD,KAAKf,IAAI,SAElCe,KAAKf,IAAI,UACT0L,EAAQ4iD,MAAME,SAAWztD,KAAKf,IAAI,SAEjB,MAAjB0L,EAAQ+iD,QACR/iD,EAAQ+iD,MAAQ,IAEhB1tD,KAAKf,IAAI,UACT0L,EAAQ+iD,MAAMF,SAAWxtD,KAAKf,IAAI,SAElCe,KAAKf,IAAI,UACT0L,EAAQ+iD,MAAMD,SAAWztD,KAAKf,IAAI,SAGlCe,KAAKf,IAAI,YACTksD,EAAanrD,KAAKf,IAAI,UAAUwQ,MAAM,KACtC9E,EAAQ6hD,OAASrB,GAErBnrD,KAAKmC,IAAI,UAAWwI,GACpB3K,KAAKmC,IAAI,YAAalB,GACtBiqD,EAAMkC,KAAKnsD,EAAM0J,GACV3K,KAAKmC,IAAI,QAAS+oD,IAK7BP,WAAY,SAAUD,EAAUiD,GAC5B,IAAI1kD,EAAMwB;AACV,OAAIigD,EAAS/xC,cAAgB/W,OAA0B,UAAjB+rD,EAC3B3tD,KAAK4tD,sBAAsBD,EAAcjD,IAGpDzhD,EAAOjJ,KACPyK,EAAO,GACPrB,EAAAA,QAAEe,KAAKugD,GAAU,SAAUh/C,EAAOuK,GAC9B,OAAOxL,EAAKS,KAAKjC,EAAK2kD,sBAAsBD,EAAc13C,OAEvDxL,IAGXmjD,sBAAuB,SAAUD,EAAcjD,GAC3C,IAAIG,EAAangD;AAOjB,OAJImgD,EADS,WADbngD,EAAO,SAAUggD,EAAWA,EAAShgD,KAAOijD,GAE1B3tD,KAAK6tD,mBAAmBnD,GAExBe,OAAOC,cAAcoC,iBAAiBpD,GAEjD,CACHhe,OAAQge,EAAShe,OACjBhiC,KAAMA,EACNmgD,YAAaA,IAIrBgD,mBAAoB,SAAUnD,GAC1B,IAAIzpD,EAAM8sD,EAAIC,EAAM78C,EAAQmsC,EAAGE,EAAG7sC,EAAGoC,EAAKkxC,EAAMgK,EAAMC,EAAG7M,EAAG8M,EAAWliD,EAAKC,EAAM8I,EAAK/L;AAgBvF,IAfAA,EAAOjJ,KACPiB,EAAO,IAAIwqD,OAAOC,cAAc0C,UAChC7uD,MAAM8uD,OAAO,iCAAkC3D,EAASjmB,SACxDr7B,EAAAA,QAAEe,KAAKugD,EAASjmB,SAAS,SAAU/4B,EAAOuK,GACtC,IAAI3T;AAMJ,OAJIA,EADc,QAAd2T,EAAKvL,MAAgC,YAAduL,EAAKvL,KACxB,SAEAuL,EAAKvL,KAENzJ,EAAKqtD,UAAUhsD,EAAG2G,EAAKhK,IAAI,QAAQqD,EAAE,SAAW2T,EAAK6L,UAEhEviB,MAAM8uD,OAAO,8BAA+B3D,EAASvyC,MACrDg2C,EAAY,GAEP3Q,EAAIF,EAAI,EAAGvqC,GADhB9G,EAAMy+C,EAASvyC,MACWjF,OAAQoqC,EAAIvqC,EAAKyqC,IAAMF,EAAG,CAIhD,IAHAtoC,EAAM/I,EAAIuxC,GACV6D,EAAI,GAEC0M,EAAKp9C,EAAI,EAAGszC,GADjB/3C,EAAOw+C,EAASjmB,SACavxB,OAAQvC,EAAIszC,EAAM8J,IAAOp9C,EAEhC,YADlBq9C,EAAO9hD,EAAK6hD,IACHrjD,MAKgB,QAAdsjD,EAAKtjD,KAJZ22C,EAAE0M,GAAM,CACJ/6B,EAAGtB,WAAW1c,EAAI+4C,IAClBzwB,EAAGtoB,EAAI+4C,IAOU,YAAdC,EAAKtjD,MACZyG,EAAS,GACL6D,EAAI+4C,KACJ58C,EAAS6D,EAAI+4C,GAAM,MAEvB1M,EAAE0M,GAAM,CACJ/6B,EAAGtB,WAAW1c,EAAI+4C,IAClBzwB,EAAGnsB,IAGPkwC,EAAE0M,GAAM/4C,EAAI+4C;AAGpBI,EAAUjjD,KAAKm2C,GAGnB,IADApgD,EAAKstD,QAAQJ,GACR3Q,EAAI0Q,EAAI,EAAGD,EAAOE,EAAUj7C,OAAQg7C,EAAID,EAAMzQ,IAAM0Q,EACrDl5C,EAAMm5C,EAAU3Q,GAChBv8C,EAAKutD,YAAYhR,EAAG,EAAG,YAAa;AAExC,OAAOv8C,GAEXwtD,mBAAoB,WAChB,GAAIzuD,KAAKf,IAAI,UAA2D,aAA/CM,MAAM6I,OAAOpI,KAAKf,IAAI,SAASyvD,YACpD,OAAO1uD,KAAKf,IAAI,SAASyvD,cAGjCnU,QAAS,CACLoU,OAAQ,WACJ,OAAO3uD,KAAKuqD,aAEhBqE,SAAU,SAAUpc,GAAO,IACnBqc,EAAc3D,EAAO4D,EADFj4C,EAAA7W;AAcvB,OAZAA,KAAKmC,IAAI,cAAc,GACvB+oD,EAAQlrD,KAAKf,IAAI,SACjB6vD,EAAgB,CACZloC,QAAS,CACL6iC,MAAOyB,EAAMxB,cACbx1B,MAAO,KAEX66B,SAAU,KACVC,gBAAiB,YACjBC,YAAa,CAAC,EAAG,GAAI,EAAG,IAE5BJ,GAAe,EAAAK,EAAAC,gBAAe,WACvB,EAAAD,EAAAE,mBAAkB,CACrBP,EAAe,yBACfA,EAAe,6BAChB5pD,MAAK,WAEJ,OADAsjC,UAAUumB,GAAeO,SAAS,cAC3Bx4C,EAAK1U,IAAI,cAAc;;ACtc9C,IACIwG,EAAU,GAAGA,QAYC1J,GAAQM,MAAlBkZ,SAAkBlZ,MAARN,OAEQM,MAAMyc,UAAU5c,OAAO,CAC7CO,KAAMJ,MAAMC,OAAOC,UACnButC,oBAAqBl2B,GAAGtX,OAAOC,UAC/BG,QAASkX,GAAGtX,OAAOC,UACnB6vD,IAAKx4C,GAAGtX,OAAOC,UACf+hC,UAAW1qB,GAAGtX,OAAOC,QAAQ,qBAC7B8vD,OAAQhwD,MAAMwB,SAAS,0BAA0B,WAC7C,OAAOf,KAAKf,IAAI,6BAEpB8D,OAAO,EACPysD,gBAAiB14C,GAAG2V,EAAE,IACtB1sB,KAAM,WAAY,IACV0vD,EACAvzB,EACAR,EACAsN,EACA0mB,EACAlsD,EACAmsD,EACAx1C,EACAmjC,EACAz2C,EACA8J,EACAoC,EACAkxC,EACA2L,EACAtsD,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,SAAS8uD,OAAO,SAAW7vD,KAAKf,IAAI,eAG9CM,MAAMT,eACFkB,KACA,QACAT,MAAMwB,SAASkhC,MAAM,SAAWjiC,KAAKf,IAAI,gBAGjD+pC,EAAMhpC,KAAKf,IAAI,gBACsC,IAA1C+pC,EAAIrgC,QAAQ,QAASqgC,EAAI91B,OAAS,KACzCrG,EAAOm8B,EAAIx1B,UAAU,EAAGw1B,EAAI91B,OAAS,GACrC3T,MAAMT,eAAekB,KAAM,OAAQT,MAAMwB,SAASkhC,MAAM,SAAWp1B,EAAO,UAC1EtN,MAAMT,eAAekB,KAAM,QAAST,MAAMwB,SAASkhC,MAAM,SAAWp1B,EAAO,WAC3E7M,KAAKmC,IAAI,aAAa,IAEd,aAAR6mC,GACAhpC,KAAKmC,IAAI,aAAc,eAEf,iBAAR6mC,GACAhpC,KAAKmC,IAAI,aAAc,eAEf,iBAAR6mC,GACAhpC,KAAKmC,IAAI,aAAc,kBAGf,YAAR6mC,GACAhpC,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,UACnCqsD,EAAW3vD,KAAKwD,MAAMwlC,IAEI,WAAtBxmC,GADJmI,EAAU3K,KAAKf,IAAI,kBACA,MACf0L,EAAUA,EAAQkX,KAAI,SAAU1C,GAC5B,MAAO,CACHpgB,MAAOogB,EACP2C,KAAMxe,EAAY,IAAMqsD,EAAW,IAAMxwC,MAGjDnf,KAAKmC,IAAI,gBAAiBwI,KAI9B3K,KAAKf,IAAI,iCAAmCuE,EAAM6K,SAElD,IAAKqhD,KADLxjD,EAAO1I,EAAM6K,SAETtP,EAAQmN,EAAKwjD,GAGT1vD,KAAKf,IAAI,gCAAgCywD,KAAa3wD,QACA,IAAtDiB,KAAKf,IAAI,gCAAgCywD,KAEzCE,EAAgB,GAGU,WAAtBptD,EAFJitD,EAAazvD,KAAKf,IAAI,gCAAgCywD,IAGlDD,EAAW7oD,SAAQ,SAACuY,GAChB,OAAOywC,EAAc1kD,KAAKiU,MAG9BywC,EAAc1kD,KAAKukD,GAGF,WAAjBjtD,EAAOzD,GACPA,EAAM6H,SAAQ,SAACuY,GACX,OAAOywC,EAAc1kD,KAAKiU,MAG9BywC,EAAc1kD,KAAKnM,GAEvByE,EAAM6K,SAASqhD,GAAWE;AAuCtC,GAjCIpsD,GACAA,EAAM6K,SAASqtB,eACf17B,KAAKf,IAAI,gBACY,MAArBe,KAAKf,IAAI,WAETy8B,EAAiB,WACb,OAAQl4B,EAAM6K,SAASqtB,eACnB,IAAK,QACD,OAAO7rB,SAASsB,OAAO;AAC3B,QACI,OAAO3N,EAAM6K,SAASqtB,eALjB,GAQE,oBAAfl4B,EAAMkH,OACNgxB,EAAgBA,EAAc7wB,YAElC6wB,EAAuC,MAAvBA,EAAc38B,MAAgB28B,EAAc38B,MAAQ28B,EACpEn8B,MAAMkD,IAAI8V,KAAKvY,MAAM,WAGjB,OAFA8E,EAAK3C,IAAI,QAASu5B,GAClB52B,EAAK3C,IAAI,SAAW2C,EAAK7F,IAAI,aAAcy8B,GACpC52B,EAAK4zB,KAAK,gBAKrB14B,KAAKf,IAAI,gBACTe,KAAKf,IAAI,qCACY,MAArBe,KAAKf,IAAI,WAETi9B,EAAel8B,KAAKf,IAAI,oCACxBe,KAAKmC,IAAI,QAAS+5B,GAClBl8B,KAAKmC,IAAI,SAAWnC,KAAKf,IAAI,aAAci9B,IAE3C14B,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,SAASkhC,MAAM,SAAWp7B;AAItF,GAAIrD,GAAwC,WAA/BhB,EAAOgB,EAAM6K,SAAS+sB,MAE/B,IAAKzqB,EAAI,EAAGszC,GADZxG,EAAOj6C,EAAM6K,SAAS+sB,MACEloB,OAAQvC,EAAIszC,EAAMtzC,IAEtC,IAAK9J,KADLsT,EAASsjC,EAAK9sC,GAENwJ,EAAOtT,GACXtH,MAAMT,eACFkB,KACA,mBACAT,MAAMwB,SAASkhC,MAAM,SAAWp7B;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,MAAMwlC,KAE5BhpC,KAAK2C,OAAS,CAAC3C,KAAKwD,MAAMwlC,KAEtBzpC,MAAM+gB,UAAUtgB,KAAKf,IAAI,WAAce,KAAKf,IAAI,UACpDe,KAAKf,IAAI,UACTe,KAAK2C,OAAOuI,KAAKlL,KAAKwD,MAAMwlC,KAE5BhpC,KAAK2C,OAAS,CAAC3C,KAAKwD,MAAMwlC,QAKX,mBAA3BhpC,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,KAAK04B,KAAK,aAEU,mBAAb14B,KAAKf,IAAqBe,KAAKf,IAAI,wBAAqB,GACxDe,KAAKf,IAAI,mBAAmBs1B,aADvC,IAIJu7B,gBAAiBh5C,GAAG8L,GAChB,OACA9L,GAAGgtC,SAAS,0BAA0B,WAAY,IAC1CiM,EAD0Cl5C,EAAA7W;AAE9C,GACIgH,eACChH,KAAKf,IAAI,WACTe,KAAKf,IAAI,mBACTe,KAAKf,IAAI,mBAGV,OADOe,KACCA,KAAKf,IAAI,eACb,IAAK,WAKD,GAJA8wD,EAAW/vD,KAAKf,IAAI,uBAAuB8zC,eACvC/yC,KAAKf,IAAI,wBAEb8wD,EAAWz+C,SAASy+C,EAAU,MAG1B/vD,KAAKf,IAAI,iBACRe,KAAKf,IAAI,UACTe,KAAKf,IAAI,mCAGV,OAAOe,KAAKwhC,UAAUviC,IAAI,SACrBgtB,WAAWjsB,KAAKf,IAAI,sBAAuB8wD,EAAU,CAClDhmD,QAAQ,IAEX9E,MACG,SAAC+P,GACG,OAAOzV,MAAMkD,IAAI8V,KAAK1B,GAAM,WACxB,GAAmC,YAA/B7B,EAAI/V,IAAI,mBAER,OADA4X,EAAK1U,IAAI,QAAS6S,GACX6B,EAAK6hB,KAAK,kBAI7B,SAAC5uB,GACG,OAAO+M,EAAK5X,IAAI,uBAAuBguC,eACnCp2B,EAAK5X,IAAI,sBACT,cASxC+wD,kBAAmB,WACf,IAAI/jD,EAAKgkD,EAAWlxD;AACpB,GAAIiI,cAAgBhH,KAAKf,IAAI,SACzB,OAAQe,KAAKf,IAAI,eACb,IAAK,WAOD,OANAF,EAAQiB,KAAKf,IAAI,SAEbgxD,EADkC,YAA/BhkD,EAAM1M,MAAM6I,OAAOrJ,KAAgC,WAARkN,EAClClN,EAAME,IAAI,MAEVF,EAETiB,KAAKf,IAAI,uBAAuBguC,eACnCjtC,KAAKf,IAAI,sBACTqS,SAAS2+C,MAK7BpjD,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,kBAIzEixD,KAAM3wD,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,qBAG5BkxD,aAAc5wD,MAAMwB,SAAS,QAAS,eAAe,WACjD,IAAIqvD,EAAWnkD,EAAKlN;AAwBpB,OAvBAA,EAAQiB,KAAKwhC,UAAUrwB,OACnBnR,KAAKf,IAAI,SACTe,KAAKf,IAAI,SACT,KACAe,KAAKf,IAAI,UAETe,KAAKf,IAAI,eACTmxD,EAAY,CAAC,mBAETrxD,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,KAAKslD,EAAWnkD,IAAQ,IACxElN,EAAQiB,KAAKf,IAAI,YAATe,CACJA,KAAKf,IAAI,aACTe,KAAKf,IAAI,SACTe,KACAjB,MAILA,KAEXsxD,gBAAiB,MACjB9vC,OAAQhhB,MAAMwB,SAAS,eAAe,WAClC,OAAOf,KAAKf,IAAI,QAAQqD,EAAE,4BAE9BguD,OAAQ/wD,MAAMukD,SAAS,SAAS,WAAY,IAAArgC,EAAAzjB;AACxC,GAA+B,kBAA3BA,KAAKf,IAAI,eAAgE,2BAA3Be,KAAKf,IAAI,cAG3D,OAAOM,MAAMkD,IAAI8V,MAAK,WAClB,IAAI2d;AAEJ,GAAiD,uBAA7CzS,EAAKxkB,IAAI,kCAGTwkB,EAAKiwB,cAAejwB,EAAK8sC,aAO7B,OAJAr6B,EAAM,SAAWzS,EAAKxkB,IAAI,aAE1BwkB,EAAKshC,WAAW,oBAAqBthC,EAAKxkB,IAAI,aAAcwkB,EAAKxkB,IAAI,UAE9DwkB,EAAKthB,IAAI+zB,EAAKzS,EAAKxkB,IAAI,gBAGtCuxD,eAAgBjxD,MAAMwB,SAAS,eAAe,WAC1C,IAAIu8C,EAAG3sC,EAAGoC,EAAKkxC,EAAMwM,EAAaC,EAAYphD,EAAKtE,EAAQL,EAASgmD;AAEpE,GADAA,EAAe,GACgB,qBAA3B3wD,KAAKf,IAAI,cACT0xD,EAAe3wD,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,MACP0lD,EAAa,IACF/sD,GAAKqH,EAChBA,EAAS0lD,GAIe,IAAxBp/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,IAGnBgtD,EAAazlD,KAAKF,SAGvB,GAA+B,mBAA3BhL,KAAKf,IAAI,cAEhB,IADAwxD,EAAc,EACPA,EAAc,IACjBnhD,EAAM,CACF3L,GAAIkM,SAAS0F,SAASk7C,EAAa,UAAUt/C,OAAO,WACpDpS,MAAO8Q,SAAS0F,SAASk7C,EAAa,UAAUt/C,OAAO,cAE3Dw/C,EAAazlD,KAAKoE,GAClBmhD;KAIJ,GADA9lD,EAAU3K,KAAKf,IAAI,iBAEf,IAAK0R,EAAI,EAAGszC,EAAOt5C,EAAQuI,OAAQvC,EAAIszC,EAAMtzC,KACzC3F,EAASL,EAAQgG,MAES,WAAlBnO,EAAOwI,MACP0lD,EAAa,IACF/sD,GAAKqH,EAChBA,EAAS0lD,GAEP,SAAU1wD,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,KAIvBgtD,EAAazlD,KAAKF;AAKlC,OAAO2lD,KAEXC,gBAAiBrxD,MAAMwB,SAAS8vD,IAAI,oBAAqB,IACzD5G,WAAY,eACZ6G,eAAgBvxD,MAAMwB,SAAS,eAAgB,QAAS,QAAQ,WAC5D,OAAIf,KAAKf,IAAI,oBACF,iBACAe,KAAKf,IAAI,qBAAuBe,KAAKf,IAAI,QACzC,gBAEJ,wBAEX8xD,kBAAmBxxD,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,qBAEX+xD,QAASzxD,MAAMwB,UAAS,WACpB,GAAIf,KAAKf,IAAI,aACT,OAAOuC,EAAAA,QAAUC,UAAY,IAAMzB,KAAKf,IAAI,gBAGpDgyD,cAAe1xD,MAAMwB,UAAS,WAC1B,IAAImwD,EAA0CC;AAC9C,MAAgC,OAA5BnxD,KAAKL,KAAKgiB,cACH,MAGP,mEACJwvC,EAAsBnxD,KAAKf,IAAI,QAAQqD,EAAE,qCAKrC4uD,EADU,SAHAjyD,EAAIe,KAAM,OAAOoxD,WAITD,EANlB,mEAUG5xD,MAAAua,OAAAiH,SACH/gB,KAAKL,KAAK2C,EAAE,sBAAuB,CAC/Bo/B,KACI,YACAwvB,EACA,KACAlxD,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,EAAY+iD,EAAAA,QAAe5+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,MAAMwlC,OACrB,GACTrmC,EAAO25C,OAAO5wC,EAAO,GAEzB1L,KAAKmC,IAAI,SAAUQ,MAjBvBA,GACMsJ,EAAMjM,KAAKf,IAAI,aAAe0J,EAAQmC,KAAKnI,EAAQsJ,GAAO,GAC5DjM,KAAK2C,OAAOuI,KAAKlL,KAAKwD,MAAMwlC,MAGhChpC,KAAK2C,OAAS,CAAC3C,KAAKwD,MAAMwlC,KAgB3B16B,OAGf8sB,KAAM77B,MAAMwB,SAAS,mBAAoB,qBAAqB,WAC1D,IAAIyC,EAAkB8tD;AACtB,GAAsC,wBAAlCtxD,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,SAASkjD,QAC3D,OAAO;AAEX,GAAIvxD,KAAKf,IAAI,4BAAiD,WAAnBuD,EAAO8uD,GAC9C,OAAO;AAIX,GAFAA,EAAUryD,EAAIuE,EAAO,iBACTxD,KAAKf,IAAI,cAChBqyD,EACD;AAEJ,GAAuB,kBAAZA,EACP,OAAOA;AAEX,GAAIA,GAA8B,WAAnB9uD,EAAO8uD,IAAwBryD,EAAIqyD,EAAS,aAAc,CACrE,GAAkC,aAA9BryD,EAAIqyD,EAAS,eAAgCtxD,KAAKf,IAAI,eACtD,OAAO;AAEX,GAAkC,gBAA9BA,EAAIqyD,EAAS,cAAkCtxD,KAAKf,IAAI,eACxD,OAAO,EAGf,OAAQoyD,EAAAA,QAAe5+C,YAAYzS,KAAKf,IAAI,SAAUqyD,OAG9DE,iBAAkBjyD,MAAMukD,SAAS,cAAc,WAC3C,OAAO9jD,KAAKyxD,cAEhBC,SAAU,SAAUh1C,GAEhB,GADA1c,KAAK04B,KAAK,YACN14B,KAAKf,IAAI,QACT,OAAOe,KAAK04B,KAAK,SAGzBi5B,QAAS,SAAUj1C,GACf,OAAO1c,KAAKmC,IAAI,SAAS,IAE7ByvD,KAAMryD,MAAMwB,UAAS,WACjB,OAAOf,KAAKf,IAAI,oBAEpB4yD,aAAc/6C,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,MAAMwlC,UAS3C,GAHIhpC,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,MAKjDmvD,cAAevyD,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,KAAK04B,KAAK,eAI7Bq5B,WAAYj7C,GAAG/V,SAAS,QAAS,SAAS,WACtC,IAAIkL,EAAKgkD,EAAWlxD;AAgBpB,OAJIkxD,GAXJlxD,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,MAAOkxD,EACP5hD,SAAUrO,KAAKf,IAAI,kBACnB4N,KAAM7M,KAAKf,IAAI,aACf0L,QAAS3K,KAAKf,IAAI,iBAClBqgC,cAAet/B,KAAKf,IAAI,2BAGhC+yD,aAAa,EACbt7C,eAAgB,WAAY,IACpBzV,EAAM+I,EADcwyB,EAAAx8B;AAexB,OAbAiB,EAAO,CACH2U,UAAU,IAEV,MAAY5V,KAAKf,IAAI,UACzB+K,EAAUhK,KAAKwhC,UAAUj4B,KAAK,CAC1BzI,IAAK,gBACLD,OAAQ,OACRI,KAAMA,KAEFgE,MAAK,SAAC0R,GAEV,OADA6lB,EAAKr6B,IAAI,MAAM,GACRq6B,EAAKr6B,IAAI,QAAQ,MAErB6H,EAAQioD,OAAM,SAACt7C,GAAS,IAAAu7C;AAC3B11B,EAAKr6B,IAAI,QAAQ;AAUjB,IAAIgwD,EAAgB;AAMpB,OAJI,QAAAD,EAACv7C,MAAAA,OAAD,EAACA,EAAMvR,eAAP,IAAA8sD,EAAAA,EAAkB,IAAIpwD,SAAS,uCAC/BqwD,EAAgB,mCAGb31B,EAAKr6B,IAAI,QAASq6B,EAAKv9B,IAAI,QAAQqD,EAAE6vD,QAGpD5X,QAAS,CACL6X,iBAAkB,SAAUrzD,GACxB,GAAIiB,KAAKf,IAAI,2CAA6CF,QAAmB,IAAVA,GAC/D,OAAOiB,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,0CAG1CozD,SAAU,WAGN,OAAoB,IADNryD,KAAKf,IAAI,eAEZe,KAAKmC,IAAI,eAAe,GAExBnC,KAAKmC,IAAI,eAAe,IAGvCmwD,sBAAuB,WAAY,IAC3BvO,EAAGxgD,EAAMma,EADkBgf,EAAA18B;AAO/B,OAJA+jD,EAAI/jD,KAAKf,IAAI,aACbsE,EAAOvD,KAAKf,IAAI,sBAChBye,EAAM1d,KAAKf,IAAI,SACL8kD,EAAEwO,eAAehvD,EAAMma,GAAK,GACvBzY,MAAK,SAACsK,GACjB,IAAIijD;AAEJ,OADAA,EAAQ17C,GAAG2V,EAAEld,GAAK+iB,MAAM,QACjBoK,EAAKv6B,IAAI,kBAAmBqwD,EAAM70C,KAAK,aAGtD80C,WAAY,WAER,OADAzyD,KAAKmC,IAAI,UAAW,MACbnC,KAAKmC,IAAI,QAAS,WAE7ByT,SAAU,WACN,IAAIrG,EACAmjD,EAEAC,EACA18C,EACA28C,EACAtV,EACA3sC,EACAoC,EACAkxC,EACAgK,EACAC,EACA7gD,EACAiJ,EACArK,EACAC,EACAixC,EACAM,EACAx0C,EACAwG,EACAmsC,EACAiX,EACA9zD;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,KAClBo/C,EAAW38C,EAAKxG,MAAM,KACtBmsC,EAAU1oC,OAAS5B,SAASshD,EAAS,GAAI,KAEhB,cAAzB38C,EAAKzC,UAAU,EAAG,KAClBo/C,EAAW38C,EAAKxG,MAAM,KACtBmsC,EAAUkX,UAAYxhD,SAASshD,EAAS,GAAI,KAEnB,cAAzB38C,EAAKzC,UAAU,EAAG,KAClBo/C,EAAW38C,EAAKxG,MAAM,KACtBmsC,EAAUmX,UAAYzhD,SAASshD,EAAS,GAAI,KAEnC,WAAT38C,IACA2lC,EAAUoX,QAAS,GAEV,UAAT/8C,IACA2lC,EAAUrP,OAAQ,GAET,cAATt2B,IACA2lC,EAAUqX,WAAY,GAEG,WAAzBh9C,EAAKzC,UAAU,EAAG,KAGE,oBAFpBo/C,EAAW38C,EAAKxG,MAAM,MAET,IACTzP,KAAKmC,IAAI,yBAAyB,GAEtCy5C,EAAUsX,OAASN,EAAS,IAEH,UAAzB38C,EAAKzC,UAAU,EAAG,KAClBo/C,EAAW38C,EAAKxG,MAAM,KACtBmsC,EAAU7lC,MAAQ68C,EAAS,IAED,eAA1B38C,EAAKzC,UAAU,EAAG,MAClBo/C,EAAW38C,EAAKxG,MAAM,KACtBmsC,EAAUuX,WAAaP,EAAS,IAEvB,WAAT38C,IACA2lC,EAAUwX,QAAS,GAEV,gBAATn9C,IACA2lC,EAAUyX,aAAc,GAEf,mBAATp9C,IACA2lC,EAAU0X,UAAW,GAEZ,kBAATr9C,IACA2lC,EAAU2X,eAAgB,GAEjB,aAATt9C,IACA2lC,EAAU4X,UAAW;KAI7B5X,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/By/C,GAAS,EACT5zD,EAAQiB,KAAKf,IAAI;AACjB,IACIiE,KAAKwD,MAAM3H,GACX4zD,GAAS,EACX,MAAOhxD,GACDA,EACJgxD,GAAS,EAEb,GAAIA,GAAU/wD,MAAMkB,QAAQI,KAAKwD,MAAM3H,IAEnC,IAAK4R,EAAI,EAAGszC,GADZ9G,EAAOj6C,KAAKwD,MAAM3H,IACMmU,OAAQvC,EAAIszC,EAAMtzC,KACtCsF,EAAOknC,EAAKxsC,IACH9F,WAAWooB,OAAO/f,SAAW0oC,EAAU1oC,QAC5ClT,KAAKmC,IACD,QACAnC,KAAKf,IAAI,QAAQqD,EAAE,qBAAsB,CACrC4Q,OAAQ0oC,EAAU1oC;KAK3BnU,GAASA,EAAMk0B,OAAO/f,SAAW0oC,EAAU1oC,QAClDlT,KAAKmC,IACD,QACAnC,KAAKf,IAAI,QAAQqD,EAAE,qBAAsB,CACrC4Q,OAAQ0oC,EAAU1oC,eAIvB0oC,IAAyD,IAA5C/8C,OAAO8H,KAAKi1C,GAAW,GAAGjzC,QAAQ,OACtDkqD,EAAoBh0D,OAAO8H,KAAKi1C,GAAW,GAAGnsC,MAAM,MACpDmsC,EAAY,IACFiX,EAAkB,IAAMvhD,SAASuhD,EAAkB;AAmDjE,GAhDIjX,GACAA,EAAUmX,WACV/yD,KAAKf,IAAI,gBAAkB28C,EAAUmX,WAErC/yD,KAAKmC,IACD,QACAnC,KAAKf,IAAI,QAAQqD,EAAE,wBAAyB,CACxC4Q,OAAQ0oC,EAAUmX,aAK1BnX,GACAA,EAAUkX,WACV9yD,KAAKf,IAAI,gBAAkB28C,EAAUkX,WAErC9yD,KAAKmC,IACD,QACAnC,KAAKf,IAAI,QAAQqD,EAAE,wBAAyB,CACxC4Q,OAAQ0oC,EAAUkX,aAI1BlX,GAAaA,EAAUoX,QAAUj/C,MAAM/T,KAAKf,IAAI,WAChDe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,uBAGrCs5C,GACAA,EAAUrP,OACVvsC,KAAKf,IAAI,WACR,8FAA8FsC,KAC3FvB,KAAKf,IAAI,WAGbe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,sBAGrCs5C,GACAA,EAAUqX,WACVpjD,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,EAAUwX,OACvB,GAAIxxD,MAAMkB,QAAQI,KAAKwD,MAAM1G,KAAKf,IAAI,WAElC,IAAKivD,EAAI,EAAGD,GADZxQ,EAAOv6C,KAAKwD,MAAM1G,KAAKf,IAAI,WACHiU,OAAQg7C,EAAID,EAAMC,IACtCj4C,EAAOwnC,EAAKyQ,GACRh4C,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;AA2M7C,OAxMIs5C,GAAaA,EAAU6X,gBAAkBzzD,KAAKf,IAAI,SAAW,GAC7De,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,yBAGrCs5C,GACAA,EAAU2X,eACV1jD,SAASyF,QAAQtV,KAAKf,IAAI,SAAU,QAEpCe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,8BAGrCs5C,GACAA,EAAU4X,UACVxzD,KAAKf,IAAI,gBAAkB,GACE,IAA7Be,KAAKf,IAAI,iBACoB,IAA7Be,KAAKf,IAAI,iBAETe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,yBAErCs5C,GAAaA,EAAUuX,YACnBnzD,KAAKf,IAAI,SAAW28C,EAAUuX,YAAcnzD,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,iBAFxByzD,EAAW1yD,KAAKf,IAAI,mCAGa,SAA7ByzD,EAASl/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,EAAUyX,aAAerzD,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,KAAKwhC,UAAUviC,IAAI,SACdoE,MAAMrD,KAAKf,IAAI,+BAAgCsQ,GAC/CtK,MAAK,SAAUkT,GACZ,IAAIu7C;AACJA,EAAYn0D,MAAMua,OAAOu0B,WAAWplC,EAAKhK,IAAI,SACvCgK,EAAKhK,IAAI,QAAQqvC,OACjBrlC,EAAKhK,IAAI;AACf,IAAI00D,EAAYx7C,EAAKsM,UAAUN,QAAO,SAAUnP,GAC5C,OAAOA,EAAI/V,IAAI,QAAUgK,EAAKhK,IAAI;AAEtC,GAAI00D,EAAUzgD,OAAS,EAAG,CAEtB,IAAI0gD,EAAa,GACbjE,EAAW1mD,EAAKhK,IAAI,aACpB40D,EAAW5qD,EAAKhK,IAAI;AACxB,IAAM40D,EAAW3wD,KAAKwD,MAAMmtD,GAAa,MAAO1sC,GAAK0sC,EAAW,CAACA,GAC5DjyD,MAAMkB,QAAQ+wD,KAAWA,EAAW,CAACA,IAC1CF,EAAU/sD,SAAQ,SAAUoO,GACxB,IAAI8+C,EAAW9+C,EAAI/V,IAAI0wD;AACvB,IAAMmE,EAAW5wD,KAAKwD,MAAMotD,GAAa,MAAO3sC,GAAK2sC,EAAW,CAACA,GAC5DlyD,MAAMkB,QAAQgxD,KAAWA,EAAW,CAACA;AAC1C,IAAMC,EAAkBD,EAASjyC,IAAI/H;AACrC+5C,EAASjtD,SAAQ,SAAUosB,GACvB,IAAMghC,EAAOl6C,OAAOkZ,IACmB,IAAnC+gC,EAAgBprD,QAAQqrD,KAA8C,IAA9BJ,EAAWjrD,QAAQqrD,IAC3DJ,EAAW1oD,KAAK8oD,SAI5B/qD,EAAK9G,IAAI,kBAAmByxD,EAAW1gD,OAAS,EAAI0gD,EAAa,MACjE3qD,EAAK9G,IACD,QACA8G,EAAKhK,IAAI,QAAQqD,EAAE,qBAAsB,CACrCkB,MAAOkwD,EAAUjnD,cACjB1N,MAAO60D,EAAWj2C,KAAK,cAI/B1U,EAAK9G,IAAI,kBAAmB,MAC5B8G,EAAK9G,IAAI,MAAM;AAEnB,OAAO8G,EAAK9G,IAAI,QAAQ,QAI/BnC,KAAKf,IAAI,UAAY28C,GAAkC,aAArBA,EAAUsX,SAC7ClzD,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,EAAUqY,cACnBj0D,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,KAAKgwD,qBAEhBkE,MAAO,SAAUrtD,EAAKstD,GAalB,OAZKA,EAUDn0D,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,KAAKo0D,kBAEvCzlD,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,KAAKq0D,eAAe,UAGvCvlC,OAAQ,WAEJ,OADA9uB,KAAKf,IAAI,SAASi5B,qBACXl4B,KAAKmC,IAAI,QAAQ,IAE5B0kC,KAAM,WACF,IAAIr0B,EAAgBvJ;AAGpB,GAFAA,EAAOjJ,KACPA,KAAK04B,KAAK,cACJ14B,KAAKf,IAAI,iBAAmB,GAE9B,OADAuT,EAAQxS,KAAKf,IAAI,UACPA,IAAI,sBACAuT,EAAMq0B,OACD5hC,MAAK,WAChB,OAAOgE,EAAK9G,IAAI,QAAQ,MAGrB8G,EAAK9G,IAAI,QAAQ,IAIpCu2B,KAAM,SAAUhuB,EAAM8nC,GAClB,OAAOxyC,KAAK+kD,WAAW,mBAAoBr6C,EAAM8nC,IAErD8hB,aAAc,SAAUv1D,EAAOkqB,GAC3B,OAAOjpB,KAAKmC,IAAI,SAAW8mB,EAAWlqB,IAE1Cw1D,YAAa,SAAUx1D,EAAOkqB,GAAW,IAAAwU,EAAAz9B;AAErC,OADAA,KAAKmC,IAAI,QAASpD,GACbA,EAIMiB,KAAKwhC,UAAUviC,IAAI,SACrBgtB,WAAWjsB,KAAKf,IAAI,sBAAuBF,GAC3CkG,MAAK,SAAC+P,GAGH,OAFAyoB,EAAKt7B,IAAI,SAAWs7B,EAAKx+B,IAAI,aAAc+V,GAC3CyoB,EAAKt7B,IAAI,QAAS6S,GACXyoB,EAAK/E,KAAK,gBARzB14B,KAAKmC,IAAI,SAAWnC,KAAKf,IAAI,aAAc,MACpCe,KAAK04B,KAAK,cAWzB87B,kBAAmB,SAAUz1D,EAAOkqB,GAChC,IAAIjpB,KAAKf,IAAI,mBAWb,OARAe,KAAKmC,IAAI,SAAWnC,KAAKf,IAAI,aAAcF,GAC3CiB,KAAKmC,IAAI,QAASpD,GAClBQ,MAAMkD,IAAI8V,KAAKvY,MAAM,WACjB,OAAOA,KAAK04B,KAAK,eAEU,aAA3B14B,KAAKf,IAAI,eAAiCM,MAAM+gB,UAAUvhB,IAC1DiB,KAAKf,IAAI,uBAAuBw1D,kBAAkBz0D,KAAKf,IAAI,uBAExDe,KAAK+kD,WAAW,mBAAoBhmD,EAAOkqB,IAEtDyrC,sBAAuB,SAAUh4C,GAC7B,IAAI3d;AAKJ,OAJAA,EAAQ2d,EAAMlX,OAAOzG,MACrBiB,KAAKmC,IAAI,SAAWnC,KAAKf,IAAI,aAAcF,GAC3CiB,KAAKmC,IAAI,QAASpD,GAClBiB,KAAK04B,KAAK,YACH14B,KAAK+kD,WAAW,mBAAoBhmD,EAAOiB,KAAKf,IAAI,eAG/D01D,cAAe,SAAU9nD,EAAM2F,EAAOoiD,GAClC,OAAO50D,KAAK+kD,WAAW,SAAUl4C,EAAM2F,EAAOoiD,KAGtDC,cAAet1D,MAAMqjB,GAAG,aAAa,WACjC,GAAK5iB,KAAKf,IAAI,QAGd,OAAOmK,EAAE,eAAgBpJ,KAAKixC,SAASjxB,WAE3C80C,gBAAiBh+C,GAAG8L,GAChB,OACA9L,GAAGgtC,SAAS,kBAAkB,WAC1B,GAA+B,aAA3B9jD,KAAKf,IAAI,eAAgCe,KAAKf,IAAI,kBAClD,OAAOe,KAAK04B,KAAK,gBAI7Bq8B,mBAAoBx1D,MAAMukD,SAAS,qBAAqB,WACpD,IAAI4O;AACJ,GAAI1yD,KAAKf,IAAI,kCAAoCe,KAAKf,IAAI,mBAE9B,iBADxByzD,EAAW1yD,KAAKf,IAAI,mCAC6C,SAA7ByzD,EAASl/C,UAAU,EAAG,GACtD,OAAOxT,KAAK04B,KAAK,eAI7Bs8B,yBAAyB,EACzBC,kBAAmBn+C,GAAGgtC,SAAS,kBAAkB,WAC7C,GAAI9jD,KAAKf,IAAI,kBACT,OAAOe,KAAKmC,IAAI,2BAA2B,MAGnD+yD,aAAc31D,MAAMukD,SAAS,SAAS,WAClC,IAAItxC;AAEJ,KADAA,EAAQxS,KAAKf,IAAI,UACPA,IAAI,cAA8B,MAAduT,EAAMkmB,KAGpC,OAAOlmB,EAAMkmB,KAAK,kBAEtBK,QAAQ,EACRo8B,WAAY51D,MAAMwB,SAAS,cAAc,WACrC,IAAIo0D;AAKJ,OAJAA,EAAar+C,GAAG2V,EAAE,IACa,kBAA3BzsB,KAAKf,IAAI,gBACTk2D,EAAan1D,KAAKo0D,iBAEfe,KAEXf,cAAe,WACX,IAAIryC,EAASlb,EAAKuuD,EAAanpD,EAAK6V,EAAM/iB;AAG1C,IAAK8H,KAFLuuD,EAAc71D,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,IAE9Bq2D,EAAY1mC,WACRnvB,MAAMV,OAAO+J,OAAO,CAChBmZ,QAASA,EACTlb,IAAKA,EACLib,KAAMA;AAIlB,OAAOszC,GAEX3zC,SAAU3K,GAAG/V,SAAS,QAAS,SAAS,WACpC,IAAIs6B,EAAWiiB,EAAGE,EAAGzqC,EAAK9G,EAAKC,EAAM/J,EAAK6wB;AAC1C,GACI/zB,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,GADAtqB,EAAI7wB,EAAIq7C,GACFtxC,EAAOjN,EAAIe,KAAM,SAAWw9C,GAAK70C,EAAQmC,KAAKkoB,EAAEvjB,MAAM,KAAMvD,IAAS,EACvE,OAAO;AAKvB,GAAmD,WAA/C1J,EAAOxC,KAAKf,IAAI,4BAAyC,CAEzD,IADAo8B,EAAYr7B,KAAKf,IAAI,uCAGjBo8B,EAAU1yB,QAAQ,aAAe,IACa,IAA9C3I,KAAKf,IAAI,mCACqB,IAA9Be,KAAKf,IAAI,oBACuB,IAA/Bo8B,EAAU1yB,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,KAEXo2D,cAAe91D,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,KAEXqkB,aAAcr0B,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;eC7/EnBL,OAAA,6BAAA,CAAA,UAAA,+CAAA,SAAAC,EAAA22D,GAGAz2D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAq2D,EAAAp2D;;;;;;;;;;;;ICPqBq2D;;;gEAA2Cv5C,EAAAA;;MCQ3Czc,MAAMi2D,UAAUp2D,OAAO,CACxC+1B,QAAS,QACThvB,kBAAmB,CAAC,OAAQ,OAC5BuE,KAAM,OACN+qD,YAAal2D,MAAMwB,SAAS,SAAS,WACjC,GAA0B,OAAtBf,KAAKf,IAAI,WAAsB6H,UAAU4uD,WAAWtoD,KACpD,OAAO,EAAAu5C,EAAAznD,SAAEc,KAAKixC,SAAS9xB,IAAI,OAGnCw2C,kBAAmBp2D,MAAMwB,SAAS,QAAS,CACvC9B,IAAK,WACD,OAAIe,KAAK+qB,OACE/qB,KAAK+qB,SAEZzkB,OAAO2pB,UAAU2lC,UAAUjtD,QAAQ,SAAW,IAG3C7B,UAAU4uD,WAAWtoD,MAEhCjL,IAAK,SAAU0E,EAAK9H,GAChB,OAAQiB,KAAK+qB,OAAShsB,KAG9B2nD,iBAAkB,WACd,IAAImP,EAASC,EAAc7sD,EAAM8sD;AACjC,IAAK/1D,KAAKf,IAAI,qBAaV,OAXAgK,EAAOjJ,KACP81D,EAAe,SAAU3uC,GACrB,OAAOle,EAAK9G,IAAI,QAAS0N,OAAOsX,EAAE/Z,MAAM+D,OAAO,gBAEnD4kD,EAAY,GACR/1D,KAAKf,IAAI,aACT82D,EAAY,IAAI/2C,KAAKhf,KAAKf,IAAI,eAE9B42D,EAAU,IAAI72C,KACd+2C,EAAY,IAAI/2C,KAAK,OAAQ62C,EAAQG,WAAYH,EAAQI,UAAW,EAAG,EAAG,EAAG,KAE1E,EAAAtP,EAAAznD,SAAEc,KAAKixC,SACTilB,WAAW,CACR/kD,OAAQ,aACRglD,SAAUnvD,aAAawlC,KACvB4pB,WAAW,EACXC,gBAAgB,EAChBx3C,UAAWk3C,EACXO,UAAU,EACVC,sBAAsB,EACtBC,YAAa,WAEhB5zC,GAAG,aAAckzC,IAG9BW,gBAAiB,WAIb,GAHIz2D,KAAKf,IAAI,sBACTe,KAAKmC,IAAI,OAAQ,QAEjBnC,KAAKf,IAAI,aACT,OAAOe,KAAKmC,IAAI,MAAOnC,KAAKf,IAAI;;MC3DfM,MAAMyc,UAAU5c,OAAO,CAChDs3D,WAAY,CAAC,sBACbC,kBAAmB,CAAC,aACpBpW,UAAW,cACXp6C,kBAAmB,CAAC,cACpBywD,UAAW,SAAUl6C,GAEjB,OADAA,EAAMyD,iBACCngB,KAAKmC,IAAI,YAAa,gBAEjC00D,SAAU,SAAUn6C,GAGhB,OAFAA,EAAMo6C,kBACN92D,KAAKmC,IAAI,YAAa,cACf,GAEX40D,UAAW,SAAUr6C,GAEjB,OADAA,EAAMo6C,mBACC,GAEXE,KAAM,SAAUt6C,GACZ,IAAIzb,EAAMg2D,EAAMC,EAAeC,EAASvB;AAaxC,GAZA51D,KAAKmC,IAAI,YAAa,eAEtB80D,GADArB,EAAYtvD,OAAO2pB,UAAU2lC,WACZjtD,QAAQ,SACzBwuD,EAAUvB,EAAUjtD,QAAQ,YAExBuuD,EADAD,EAAO,GAAKE,EAAU,EACN,OAEA,YAGpBl2D,EAAOyb,EAAM8jC,aAAaE,QAAQwW,GAE9Bl3D,KAAKf,IAAI,WACT,OAAOe,KAAKg4C,QAAQ/2C,EAAMyb;;MCjCbnd,MAAMyc,UAAU5c,OAAO,CAC5Cs3D,WAAY,CAAC,kBACbvwD,kBAAmB,CAAC,aACpBixD,UAAW,OACXC,UAAW,SAAU36C,GACjB,IAAIu6C,EAAMC,EAAeC,EAASvB;AAUlC,OAPAqB,GADArB,EAAYtvD,OAAO2pB,UAAU2lC,WACZjtD,QAAQ,SACzBwuD,EAAUvB,EAAUjtD,QAAQ,YAExBuuD,EADAD,EAAO,GAAKE,EAAU,EACN,OAEA,YAEbz6C,EAAM8jC,aAAaC,QAAQyW,EAAel3D,KAAKf,IAAI;;MCbnCq4D,EAAAA,QAAel4D,OAAO,CACjD6qD,WAAY,8BACZsN,YAAa,0BACbhd,QAAS,CACLmX,SAAU,WACN,OAAO1xD,KAAKmC,IAAI,eAAe;;MCLjB5C,MAAMyc,UAAU5c,OAAO,CAE7Co4D,aAAa,EAEbz4D,MAAO,KAEP04D,QAAS,eAET9sD,QAAS,GACTuqD,aAAc31D,MAAMukD,SAAS,SAAS,WAClC,OAAI9jD,KAAKf,IAAI,gBACFe,KAAK+kD,WAAW,SAAU/kD,KAAKf,IAAI,iBAEnCe,KAAK+kD,WAAW,SAAU/kD,KAAKf,IAAI,aAIlDy4D,SAAUn4D,MAAMwB,SAAS,UAAW,SAAS,WACzC,IAAI42D;AACJ,OAAI33D,KAAKf,IAAI,UACT04D,EAAS,IAAIC,OAAO53D,KAAKf,IAAI,SAAU,KAChCe,KAAKf,IAAI,WAAWklB,QAAO,SAAUlO,GACxC,MAAoB,WAAhBzT,EAAOyT,GACA0hD,EAAOp2D,KAAK0U,EAAKpJ,MAErB8qD,EAAOp2D,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,CACLoX,QAAS,WACL,OAAO3xD,KAAKmC,IAAI,eAAe,IAEnC01D,QAAS,aAETnG,SAAU,WAEN,OADA1xD,KAAKmC,IAAI,eAAe,GACjBnC,KAAK04B,KAAK,cAErBzY,OAAQ,SAAUjV,GACd,IAAIjM;AAcJ,OAbA,EAAA4nD,EAAAznD,SAAE,QAASc,KAAKixC,SAASnb,OACrB9qB,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,IAE3C8sD,UAAW,WACP,IAAI/M,EAAOl4C,EAAGE,EAAK/H,EAAQL,EAASwU;AAMpC,IALA4rC,GAAQ,EAEe,KADvBpgD,EAAU3K,KAAKf,IAAI,aACPiU,SACR63C,GAAQ,GAEPl4C,EAAI,EAAGE,EAAMpI,EAAQuI,OAAQL,EAAIE,EAAKF,IAEvCsM,GADAnU,EAASL,EAAQkI,IACJlP,GAAKqH,EAAO6B,KAAO7B,EAC5BhL,KAAKf,IAAI,YAAckgB,EACvB4rC,GAAQ,EAER/qD,KAAK+kD,WAAW,eAAgB/5C;AAGxC,GAAI+/C,EACA,OAAO/qD,KAAKmC,IAAI,QAAS;;MC1FrB5C,MAAMyc,UAAU5c,OAAO,CACvCspD,eAAgBnpD,MAAMC,OAAOC,UAK7BV,MAAO,KAEPwhB,OAAQ,KACRw3C,WAAW,EAKXptD,QAAS,KAET8sD,QAAS,eACTO,aAAc,KACdv2C,UAAU,EACVw2C,UAAW,WAIP,OADSj4D,KAAKixC,QAAQinB,qBAAqB,UAAU,GACtCn5D,MAAQiB,KAAKf,IAAI,SAAWe,KAAKf,IAAI,SAAW,IAEnEk5D,eAAgBrhD,GAAG/V,SAAS,SAAS,WACjC,IAAIq3D;AACJ,GAAIp4D,KAAKf,IAAI,eAET,UADAm5D,EAAmBp4D,KAAKf,IAAI,kBAAkBA,IAAI,mBAC1Bm5D,EAAiBp4D,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,EAAA05D,GAGAx5D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAo5D,EAAAn5D,cCTAR,OAAA,kDAAA,CAAA,UAAA,+CAAA,SAAAC,EAAA25D,GAGAz5D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAq5D,EAAAp5D,cCTAR,OAAA,qDAAA,CAAA,UAAA,kDAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D,cCTAR,OAAA,mDAAA,CAAA,UAAA,gDAAA,SAAAC,EAAA65D,GAGA35D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAu5D,EAAAt5D,cCTAR,OAAA,0DAAA,CAAA,UAAA,uDAAA,SAAAC,EAAA85D,GAGA55D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAw5D,EAAAv5D,cCTAR,OAAA,mDAAA,CAAA,UAAA,gDAAA,SAAAC,EAAA+5D,GAGA75D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAy5D,EAAAx5D,cCTAR,OAAA,+BAAA,CAAA,UAAA,4CAAA,SAAAC,EAAAg6D,GAGA95D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA05D,EAAAz5D,cCTAR,OAAA,+CAAA,CAAA,UAAA,0DAAA,SAAAC,EAAAi6D,GAGA/5D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA25D,EAAA15D,cCTAR,OAAA,8BAAA,CAAA,UAAA,yCAAA,SAAAC,EAAAk6D,GAGAh6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA45D,EAAA35D,cCTAR,OAAA,6BAAA,CAAA,UAAA,iDAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D,cCTAR,OAAA,6BAAA,CAAA,UAAA,iDAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D,cCTAR,OAAA,0BAAA,CAAA,UAAA,8CAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D,cCTAR,OAAA,8BAAA,CAAA,UAAA,yCAAA,SAAAC,EAAAo6D,GAGAl6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA85D,EAAA75D,cCTAR,OAAA,6BAAA,CAAA,UAAA,iDAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D,cCTAR,OAAA,0BAAA,CAAA,UAAA,8CAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D,cCTAR,OAAA,wCAAA,CAAA,UAAA,4DAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D,cCTAR,OAAA,yCAAA,CAAA,UAAA,6DAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D,cCTAR,OAAA,6BAAA,CAAA,UAAA,iDAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D,cCTAR,OAAA,+BAAA,CAAA,UAAA,4CAAA,SAAAC,EAAAq6D,GAGAn6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA+5D,EAAA95D,cCTAR,OAAA,0BAAA,CAAA,UAAA,8CAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D,cCTAR,OAAA,gCAAA,CAAA,UAAA,6CAAA,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,CACzCO,KAAMJ,MAAMC,OAAOC,UACnBinD,iBAAkB,WACd,OAAO,EAAAC,EAAAznD,SAAE,cAAck8B,QAE3Bl5B,UAAW3C,MAAMwB,SAAS,SAAS,WAC/B,IAAIqE,EAAS8zD,EAAKC;AAgBlB,OAfA,EAAAxS,EAAAznD,SAAE,cAAc0yD,OAChBsH,EAAMl5D,KAAKf,IAAI,uBAEf,EAAA0nD,EAAAznD,SAAE2gB,UAAUu5C,UAAU,GAGlBh0D,GAFJ+zD,EAAan5D,KAAKf,IAAI,QAAQqD,EAAE,UAAY42D,IAC7B5qB,QAAiD,wBAAvC6qB,EAAW7qB,OAAO96B,UAAU,EAAG,IAC1C2lD,EAAW7qB,OAGjB4qB,EAAM,IAAMl5D,KAAKf,IAAI,oBAAsB,KAAOe,KAAKf,IAAI,gBAAkB,IAGrF4mD,YAAW,WACP,OAAO,EAAAc,EAAAznD,SAAE,cAAcm6D,QAAQ,UAChC,KACIj0D;;AChCf1G,OAAA,0CAAA,CAAA,UAAA,8DAAA,SAAAC,EAAA26D,GAGAz6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAq6D,EAAAp6D,cCTAR,OAAA,iCAAA,CAAA,UAAA,qDAAA,SAAAC,EAAA46D,GAGA16D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs6D,EAAAr6D;MCCsBK,MAAMyc,UAAU5c,OAAO,CACzCsnD,iBAAkB,WACd,IAAIz9C;AAGJ,OAFAA,EAAOjJ,KACPA,KAAKw5D,iBACE,EAAA7S,EAAAznD,SAAE,SAAUc,KAAKixC,SAAStQ,QAAO,WACpC,IAAI84B;AAEJ,OADAA,GAAW,EAAA9S,EAAAznD,SAAEc,MAAM6E,KAAK,mBAAmB5F,IAAI,GAAG0E,GAC3CsF,EAAK9G,IAAI,QAASs3D,OAGjCD,cAAe,WACX,IAAI5yC,EAAS8yC,EAAOn5C,EAAQN,EAAclhB;AAsB1C,OArBOiB,KACP4mB,EAAU5mB,KAAKf,IAAI,WACnBghB,GAAS,EAAA0mC,EAAAznD,SAAE,SAAUc,KAAKixC,SAC1B1wB,EAASvgB,KAAKf,IAAI,UAClBF,EAAQiB,KAAKf,IAAI,SACbshB,GACAN,EAAO05C,OAAO,iBAAmBp5C,EAAS,cAG9Cm5C,EAAQ9yC,EAAQ3nB,IAAI,qBAGhBy6D,EAAQ9yC,EAAQ3nB,IAAI,uBAGnBy6D,IACDA,EAAQ9yC,EAAQ3nB,IAAI,gBAEnBshB,GAAWxhB,GAlBTiB,KAmBEmC,IAAI,QAASu3D,GAEf9yC,EAAQhgB,SAAQ,SAAUqP,GAC7B,OAAKA,EAAKtS,GAaCsc,EAAO05C,OACV,eACI1jD,EAAKtS,GACL,KACC5E,GAASA,IAAUkX,EAAKtS,GAAK,uBAAyB,IACvD,IACAsS,EAAKlX,MACL,aAnBDkhB,EAAO05C,OACV,eACI1jD,EACA,MACClX,GAAUA,IAAUkX,GAAQlX,IAAUkX,EAAKq4B,OAEtC,GADA,wBAEN,IACAr4B,EACA,iBAepBwgD,gBAAiB,WACb,IAAKz2D,KAAKf,IAAI,SACV,OAAIe,KAAKf,IAAI,mBACFe,KAAKmC,IAAI,QAAS,6BAElBnC,KAAKmC,IAAI,QAAS,iBAIrC6jD,IAAK,WACD,IAAI/lC;AAEJ,GADAA,GAAS,EAAA0mC,EAAAznD,SAAE,SAAUc,KAAKixC,SAEtB,OAAOhxB,EAAOpb,KAAK,cAAgB7E,KAAKf,IAAI,SAAW,MAAM26D,KAAK,YAAY,IAEpF7Q,SAAS;eCrFfrqD,OAAA,+BAAA,CAAA,UAAA,yDAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D,cCTAR,OAAA,6BAAA,CAAA,UAAA,uDAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D;MCD6BK,MAAMyc,UAAU5c,OAAO,CAChD+1B,QAAS,SACThvB,kBAAmB,CAAC,QAAS,UAC7BugD,iBAAkB,WACd,IAAI1yB;AAIJ,OAHAA,EAASh0B,KAAKf,IAAI,WAAW46D,WAAW,MACxC75D,KAAKmC,IAAI,SAAU6xB,GACnBh0B,KAAK85D,OAAO9lC,GACLh0B,KAAKotD,QAEhBA,KAAM,WACF,IAAIp5B,EAAQy1B,EAAOxgD;AASnB,OARAA,EAAOjJ,KACPg0B,EAASh0B,KAAKf,IAAI,UAClBe,KAAK85D,OAAO9lC,IACZy1B,EAAQ,IAAIsQ,OACNC,OAAS,WAEX,OADAhmC,EAAS/qB,EAAKhK,IAAI,WACJg7D,UAAUxQ,EAAO,EAAG,EAAGA,EAAMv1B,MAAOu1B,EAAMoC,SAEpDpC,EAAMyQ,IAAMl6D,KAAKf,IAAI,SAC/B8pD,SAAS,QACX+Q,OAAQ,SAAU9lC,GACd,GAAIA,EAEA,OADAA,EAAOmmC,UAAY,OACZnmC,EAAOomC,SAAS,EAAG,EAAGp6D,KAAKf,IAAI,SAAUe,KAAKf,IAAI;;MCnBzCM,MAAMyc,UAAU5c,OAAO,CAC/CM,QAASH,MAAMC,OAAOC,UACtBE,KAAMJ,MAAMC,OAAOC,UACnB85B,UAAWh6B,MAAMC,OAAOC,UACxBoQ,OAAQtQ,MAAMC,OAAOC,UACrBmF,KAAMrF,MAAMC,OAAOC,UACnB01B,QAAS,KACTwhC,kBAAmB,CAAC,YACpB0D,cAAevjD,GAAG2V,EAAE,CAChB6tC,QAAQ,EACRv3D,OAAO,IAEXw3D,UAAWh7D,MAAMwB,SAAS,OAAQ,SAAS,WACvC,MAAO,CAACf,KAAKf,IAAI,QAASe,KAAKf,IAAI,gBAEvCu7D,kBAAmBj7D,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,KAEX81C,aAAcl7D,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,WAEjDy7D,SAAUn7D,MAAMwB,SAAS,OAAQ,WAAW,WACxC,MAA0C,WAAtCf,KAAKf,IAAI,2BAAiE,IAAxBe,KAAKf,IAAI,cAMnEsE,KAAM,KACNmjD,iBAAkB,WACd,OAAO1mD,KAAKmC,IAAI,OAAQnC,KAAKf,IAAI,iCAGrCymC,QAASnmC,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,0BAIzE07D,QAASp7D,MAAMwB,SAAS,WAAW,WAC/B,OAA4B,IAAxBf,KAAKf,IAAI,aACDe,KAAKf,IAAI,wBAIzB27D,UAAWr7D,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,yBAI3E47D,WAAYt7D,MAAMwB,SAAS,QAAQ,WAC/B,GAA8B,YAA1Bf,KAAKf,IAAI,eAA+BuC,EAAAA,QAAUkO,UAAU1P,KAAKf,IAAI,SACrE,OAAO,KAGf67D,WAAYv7D,MAAMqjB,GACd,OACArjB,MAAMukD,SAAS,aAAc,QAAS,aAAc,QAAQ,WACxD,IAAItf,EAAKu2B,EAAM5gD,EAAQtH,EAAGE,EAAK9G;AAI/B,GAHOjM,KACPma,EAASrD,GAAG2V,EAAE,IACdsuC,EAAO/6D,KAAKf,IAAI,WAChB,CAGA,IAAK4T,EAAI,EAAGE,EAAMgoD,EAAK7nD,OAAQL,EAAIE,EAAKF,IACpC2xB,EAAMu2B,EAAKloD,GACXtT,MAAM4C,IAAIqiC,EAAK,UAAWA,EAAIwE,KAC9BzpC,MAAM4C,IACFqiC,EACA,gBACyB,iBAAxBv4B,EAAMu4B,EAAIl1B,IAAI5E,OAAmC,kBAARuB,GAE9CkO,EAAOuU,WAAW8V,EAAIl1B;AAE1B,OAAOtP,KAAKmC,IAAI,SAAUgY,QAGlC6gD,aAAc,YACdj5C,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,OAGvC4mD,SAAS,iBACXnP,UAAWr6C,MAAMwB,SAAS,sBAAsB,WAC5C,IAAIiwC;AAEJ,OAAgB,OADhBA,EAAWhxC,KAAKf,IAAI,cAEZ+xC,EAAS/xC,IAAI,aACN+xC,EAAS/xC,IAAI,aAGrBe,KAAKf,IAAI,QAAU,YAE9Bg8D,aAAc17D,MAAMwB,SAAS,yBAAyB,WAClD,IAAIiwC;AAEJ,OAAgB,OADhBA,EAAWhxC,KAAKf,IAAI,cAEZ+xC,EAAS/xC,IAAI,gBACN+xC,EAAS/xC,IAAI,gBAGrBe,KAAKf,IAAI,QAAU,eAE9Bi8D,eAAgBpkD,GAAG/V,SAAS,2BAA2B,WACnD,IAAkB26C,EAAczpC,EAAMgC;AACtC,QAAKjU,KAAKf,IAAI,6BAGdgV,EACIpE,OAAOyrC,MAAM/L,QAAQ,OAAOgM,OAC5B1rC,OAAOyrC,IAAIt7C,KAAKf,IAAI,4BAA4BswC,QAAQ,OAAOgM,OACnEtpC,EAAOpC,OAAO2rC,SAASvnC,EAAM,WAAWwnC,SAExCC,EACI7rC,OAAOyrC,IAAIt7C,KAAKf,IAAI,4BAA4BswC,QAAQ,OAAOgM,OAC/D1rC,OAAOyrC,IAAIt7C,KAAKf,IAAI,2BAA2BswC,QAAQ,OAAOgM,OAE7C,IADN1rC,OAAO2rC,SAASE,EAAc,WAAWD,WAEhDxpC,EAAO,IAGJ,iDAEPA,EAAO,KAGJ,0CAA4CA,MAEvDkpD,wBAAyBrkD,GAAG/V,SAAS,kBAAkB,WACnD,MAAmC,iDAA/Bf,KAAKf,IAAI,kBACF,KAEA,OAGfs7C,QAAS,CACL6gB,QAAS,SAAU53D,GACf,IAAIyI;AACJ,GAA6B,iBAAtBA,EAAMzI,EAAMkH,OAAmC,kBAARuB,EAG9C,OAAOjM,KAAK+kD,WAAW,mBAAoB,CACvCnc,YAAa,CACTqe,MAAO,CAAC,YAAajnD,KAAKf,IAAI,QAAU,IAAMuE,EAAMwlC,IAAKhpC,KAAKf,IAAI,iBAI9Eo8D,SAAU,SAAUrmD,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,WACXgoC,QAAQjnC,KAAKf,IAAI,QAAQqD,EAAE,4BAC3B2C,MAAK,SAACq2D,GACH,IAAIr6D;AACJ,GAAIq6D,EAKA,OAJAr6D,EAAO,IACFsC,GAAQ,CACTs8B,QAAQ,GAELhpB,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,EAAMq0B,cAKrCzkB,OAAQ,SAAUpN,GAAK,IAAAyO,EAAAzjB;AACnB,IAAIwB,EAAAA,QAAUkO,UAAU1P,KAAKf,IAAI,SAGjC,OAAOe,KAAKf,IAAI,WACXgoC,QAAQjnC,KAAKf,IAAI,QAAQqD,EAAE,0BAC3B2C,MAAK,SAACq2D,GACH,GAAIA,EACA,OAAOtmD,EAAImU,gBAAgBlkB,MAAK,SAACgd,GAE7B,GADAjN,EAAI22B,gBACAloB,EAAKiwB,cAAejwB,EAAK8sC,aAG7B,OAAO9sC,EAAKshC,WAAW,eAAgB,SAAU/vC,UAYrEhN,QAAS,SAAUgN,GAAK,IACVumD,EAAgBtjD,EADNukB,EAAAx8B;AAEpB,IAAIwB,EAAAA,QAAUkO,UAAU1P,KAAKf,IAAI,SAMjC,OAHOe,KAAKf,IAAI,QAChBgZ,GAAc,EAAAW,EAAAC,WAAU7Y,KAAKf,IAAI,SAAS6Z,WAC1CyiD,EAAiBv7D,KAAKf,IAAI,QAAQ6Z,WAC3B9Y,KAAKf,IAAI,WACXgoC,QAAQjnC,KAAKf,IAAI,QAAQqD,EAAE,2BAC3B2C,MAAK,SAACq2D,GACH,GAAIA,EACA,OAAO9+B,EAAKv9B,IAAI,QACX8F,QAAQ,IAAMkT,EAAc,IAAMjD,EAAIrR,GAAK,kBAAmB,CAC3DqB,SAAU,OACV0F,KAAM,MACNzJ,KAAM,KAAOs6D,EAAiB,oCAEjCt2D,MAAK,WACF,OAAO+P,EAAI22B,sBAKnC9E,KAAM,WACF,IAAI59B;AAEJ,OADAA,EAAOjJ,KACHwB,EAAAA,QAAUkO,UAAU1P,KAAKf,IAAI,UAC7Be,KAAKmC,IAAI,QAAQ,QACjBnC,KAAKf,IAAI,SAASi5B,sBAGfl4B,KAAKf,IAAI,SACX4nC,OACA5hC,MAAK,WACF,OAAOgE,EAAK9G,IAAI,QAAQ,OAGpC+xD,MAAO,WACH,OAAIl0D,KAAKf,IAAI,cACTe,KAAKmC,IAAI,eAAgB,aAClBnC,KAAKf,IAAI,cAAcovB,aAAaruB,KAAKf,IAAI,YAEpDe,KAAKmC,IAAI,eAAgB,WAClBnC,KAAKf,IAAI,cAAcyvB,WAAW1uB,KAAKf,IAAI,YAG1Du8D,eAAgB,SAAU9wD,GACtB,OAAO1K,KAAKf,IAAI,aAAay6B,WAAW,CACpCD,SAAUz5B,KAAKuD,KAAO,sBACtBo2B,OAAQjvB,EACRkvB,MAAO;eCjUvBl7B,OAAA,2BAAA,CAAA,UAAA,6CAAA,SAAAC,EAAA88D,GAGA58D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAw8D,EAAAv8D,cCTAR,OAAA,8BAAA,CAAA,UAAA,gDAAA,SAAAC,EAAA+8D,GAGA78D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAy8D,EAAAx8D;MCCoBK,MAAMyc,UAAU5c,OAAO,CACvC8N,MAAO3N,MAAMC,OAAOC,UACpBg4D,QAAS,0BACTld,QAAS,CACLga,YAAa,SAAUx1D,GACnB,OAAOiB,KAAK+kD,WAAW,SAAUhmD,EAAO;;MCH1BQ,MAAMyc,UAAU5c,OAAO,CAC7C8N,MAAO3N,MAAMC,OAAOC,UACpBgsD,OAAQlsD,MAAMC,OAAOC,UACrBoiB,IAAK,KAEL85C,QAAS,GACTC,WAAY9kD,GAAG2V,EAAE,IACjBovC,WAAY/kD,GAAG2V,EAAE,IACjBqvC,SAAUhlD,GAAG2V,EAAE,IACfsvC,UAAW,EACXC,oBAAoB,EAEpBC,UAAWnlD,GAAG8L,GAAG,oBAAoB,WACjC,IAAI6nC,EAAWyR,EAAUC,EAAKC,EAAKjmB,EAAKt0B,EAAKlX,EAAS1B,EAAMozD;AAqG5D,OApGA5R,GAAY,EAAA9D,EAAAznD,SAAE,cAAec,KAAKixC,SAAS,GAC3CorB,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,OAK7B1zD,EAAOjJ,KACHA,KAAKf,IAAI,UACTk3C,EAAMjzC,KAAKwD,MAAM1G,KAAKf,IAAI,UAC1Bk9D,EAAMhmB,EAAIjzB,SACVk5C,EAAMjmB,EAAI/yB,WACHpjB,KAAKf,IAAI,cAAgBe,KAAKf,IAAI,oCACzCi9D,EAAWl8D,KAAKf,IAAI,mCACpBk9D,EAAMD,EAASh5C,SACfk5C,EAAMF,EAAS94C,WACRpjB,KAAKf,IAAI,cAAgBe,KAAKf,IAAI,kCACzCi9D,EAAWl8D,KAAKf,IAAI,iCACpBk9D,EAAMD,EAASh5C,SACfk5C,EAAMF,EAAS94C,WACRpjB,KAAKf,IAAI,mBAAqBe,KAAKf,IAAI,uCAC9Ci9D,EAAWl8D,KAAKf,IAAI,sCACpBk9D,EAAMD,EAASh5C,SACfk5C,EAAMF,EAAS94C,YAEf+4C,EAAM,UACNC,EAAM,UACFnsC,UAAU4sC,aACV5sC,UAAU4sC,YAAYC,eAAc,SAAUt0D,GAC1C,IAAIotC;AAKJ,OAJAumB,EAAM3zD,EAASu0D,OAAO75C,SACtBk5C,EAAM5zD,EAASu0D,OAAO35C,UACtBwyB,EAAO,IAAItvC,OAAOmlD,OAAOuR,KAAKC,OAAOd,EAAKC,GAC1Cv6C,EAAIq7C,MAAMtnB,GACH/zB,EAAIs7C,QAAQ,QAI/BxyD,EAAU,CACNyyD,OAAQ,IAAI92D,OAAOmlD,OAAOuR,KAAKC,OAAOd,EAAKC,GAC3CiB,KAAMp0D,EAAKhK,IAAI,aACfq+D,OAAQjB,EACRkB,kBAAkB,EAClBC,aAAa,GAEjB37C,EAAM,IAAIvb,OAAOmlD,OAAOuR,KAAKS,IAAIhT,EAAW9/C,GACxC3K,KAAKf,IAAI,UACTgK,EAAKy0D,oBAAoB,IAAIp3D,OAAOmlD,OAAOuR,KAAKC,OAAOd,EAAKC,GAAMv6C,GAElE7hB,KAAKf,IAAI,gBACT4iB,EAAImqC,YAAY,SAAS,SAAU7kC,GAC/B,OAAOle,EAAKy0D,oBAAoBv2C,EAAEw2C,OAAQ97C,MAG9C7hB,KAAKf,IAAI,cACTe,KAAK49D,aAAa/7C,GAElB7hB,KAAKf,IAAI,mBACTe,KAAK69D,kBAAkBh8C,GAEpB7hB,KAAKmC,IAAI,MAAO0f,MAE3Bi8C,eAAgBhnD,GAAGgtC,SAAS,gBAAgB,WAIxC,OAHA9jD,KAAK+9D,eACL/9D,KAAKg+D,eACLh+D,KAAKi+D,aACEj+D,KAAK49D,aAAa59D,KAAKf,IAAI,WAEtCi/D,sBAAuBpnD,GAAGgtC,SAAS,qBAAqB,WAGpD,OAFA9jD,KAAK+9D,eACL/9D,KAAKi+D,aACEj+D,KAAK69D,kBAAkB79D,KAAKf,IAAI,WAE3C8+D,aAAc,WAEV,OADA/9D,KAAKm+D,OAAO,KAAMn+D,KAAKf,IAAI,eACpBe,KAAKmC,IAAI,aAAc2U,GAAG2V,EAAE,MAEvCuxC,aAAc,WAEV,OADAh+D,KAAKm+D,OAAO,KAAMn+D,KAAKf,IAAI,eACpBe,KAAKmC,IAAI,aAAc2U,GAAG2V,EAAE,MAEvCwxC,WAAY,WAER,OADAj+D,KAAKm+D,OAAO,KAAMn+D,KAAKf,IAAI,aACpBe,KAAKmC,IAAI,WAAY2U,GAAG2V,EAAE,MAErC0xC,OAAQ,SAAUt8C,EAAKu8C,GACnB,IAAIvrD,EAAGE,EAAKzD,EAAK+tC;AAEjB,IADAA,EAAW,GACNxqC,EAAI,EAAGE,EAAMqrD,EAAKlrD,OAAQL,EAAIE,EAAKF,IACpCvD,EAAM8uD,EAAKvrD,GACXwqC,EAASnyC,KAAKoE,EAAI6uD,OAAOt8C;AAE7B,OAAOw7B,GAGXwgB,kBAAmB,SAAUh8C,GACzB,IAAI3I,EAAOrG,EAAG+mB,EAAO7mB,EAAKm7C,EAAGmQ,EAAMC,EAASC,EAAMtyD,EAAKoxC;AAKvD,IAJOr9C,KACPkZ,EAAQ,EAERmkC,EAAW,GACNxqC,EAAI,EAAGE,GAFZ9G,EAAMjM,KAAKw+D,gBAEWtrD,OAAQL,EAAIE,EAAKF,IAEnCwrD,GADAnQ,EAAIjiD,EAAI4G,IACCuR,QAAQlB,SACjBq7C,EAAOrQ,EAAE9pC,QAAQhB,UACjBk7C,EAAU,IAAIh4D,OAAOmlD,OAAOuR,KAAKC,OAAOoB,EAAME,GAC9C3kC,EAAQs0B,EAAE9pC,QAAQwV,MATf55B,KAUEy+D,qBAAqB,UAAWH,EAASz8C,EAAa,IAAR3I,EAAa0gB,GAChEyjB,EAASnyC,KAAKgO;AAElB,OAAOmkC,GAGXugB,aAAc,SAAU/7C,GACpB,IAAIk7C,EACA7jD,EACAwlD,EACA7rD,EACAE,EACAm7C,EACAmQ,EACAC,EACAC,EACAI,EACA1yD,EACAoxC,EAEAuhB,EACAC,EACAC,EACAC,EACAC,EACAC;AAKJ,IAJOj/D,KACPkZ,EAAQ,EAERmkC,EAAW,GACNxqC,EAAI,EAAGE,GAFZ9G,EAAMjM,KAAKk/D,WAEWhsD,OAAQL,EAAIE,EAAKF,KACnCq7C,EAAIjiD,EAAI4G,IAEF0jC,YACFwoB,EAAY7Q,EAAE3X,UAAUrzB,SACxB+7C,EAAY/Q,EAAE3X,UAAUnzB,UACxB47C,EAAe,IAAI14D,OAAOmlD,OAAOuR,KAAKC,OAAO8B,EAAWE,IAExD/Q,EAAE1X,UACFooB,EAAU1Q,EAAE1X,QAAQtzB,SACpB47C,EAAU5Q,EAAE1X,QAAQpzB,UACpBy7C,EAAa,IAAIv4D,OAAOmlD,OAAOuR,KAAKC,OAAO2B,EAASE,IAGxDH,EAAS,EACLzQ,EAAE3X,WAAa2X,EAAE3X,UAAU4oB,SAAW,KAASjR,EAAE3X,UAAU4oB,SAAW,MACtER,EAASzQ,EAAE3X,UAAU4oB,UAErBjR,EAAE3X,WAAa2X,EAAE1X,SAtBlBx2C,KAuBMy+D,qBAAqB,cAAeI,EAAYh9C,EAAa,IAAR3I,EAAag1C,EAAEzX,QAvB1Ez2C,KAwBMy+D,qBACD,gBACAO,EACAn9C,EACQ,IAAR3I,EACAg1C,EAAEzX,OACFkoB,KAEIzQ,EAAE3X,WAAa2X,EAAE1X,QAhC1Bx2C,KAiCMy+D,qBAAqB,WAAYI,EAAYh9C,EAAa,IAAR3I,EAAag1C,EAAEzX,QAjCvEz2C,KAmCMy+D,qBACD,WACAO,EACAn9C,EACQ,IAAR3I,EACAg1C,EAAEzX,OACFkoB,GAGRzlD,IAEIg1C,EAAE9pC,SAEFi6C,EAAOnQ,EAAE9pC,QAAQlB,SACjBq7C,EAAOrQ,EAAE9pC,QAAQhB,UACjBk7C,EAAU,IAAIh4D,OAAOmlD,OAAOuR,KAAKC,OAAOoB,EAAME,GAlD/Cv+D,KAmDMy+D,qBAAqB,UAAWH,EAASz8C,EAAa,IAAR3I,EAAag1C,EAAE9pC,QAAQwV,OAC1EmjC,EAAS,CAACiC,EAAcV,GApDzBt+D,KAqDMo/D,mBAAmBrC,EAAQl7C,EAAa,IAAR3I,GACrCwlD,EAAY,CAACG,EAAYP,GAtD1Bt+D,KAuDMo/D,mBAAmBV,EAAW78C,EAAa,IAAR3I,GACxCmkC,EAASnyC,KAAKgO,MAEdmkC,EAASnyC,UAAK;AAGtB,OAAOmyC,GAGXohB,qBAAsB,SAAU/zD,EAAMizD,EAAQ97C,EAAKw9C,EAAOzlC,GAAmB,IAAA90B,EAAA9E,KAAZ2+D,EAAYx+D,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAH;AACtE,OAAOZ,MAAMkD,IAAI8F,OAAM,WACnB,IAAI+2D,EAAMC;AAoCV,MAnCa,aAAT70D,EACA40D,EAAO,2BACS,kBAAT50D,EACP40D,EAAO,CACHx+D,IAAK,eACL0+D,OAAQ,IAAI/T,OAAOuR,KAAKyC,MAAM,GAAI,KAEtB,gBAAT/0D,EACP40D,EAAO,CACHx+D,IAAK,eACL0+D,OAAQ,IAAI/T,OAAOuR,KAAKyC,MAAM,GAAI,KAEtB,YAAT/0D,IACP40D,EAAO,+BAEXC,EAAS,IAAIj5D,OAAOmlD,OAAOuR,KAAK0C,OAAO,CACnC5oC,SAAU6mC,EACV97C,IAAKA,EACLy9C,KAAMA,EACNjS,UAAW5B,OAAOuR,KAAK2C,UAAUC,KACjC78D,MAAO62B,IAEP+kC,EAAS,IACTA,EAAS,IAAIlT,OAAOuR,KAAK6C,OAAO,CAC5BC,YAAa,UACbC,cAAe,GACfC,aAAc,EACdC,UAAW,UACXC,YAAa,GACbr+C,IAAKA,EACLu7C,OAAQO,EACRgB,OAAQA,IAEZ75D,EAAK7F,IAAI,cAAcyvB,WAAWiwC,IAE/B75D,EAAK7F,IAAI,cAAcyvB,WAAW6wC,KAC1CF,IAGPD,mBAAoB,SAAUrC,EAAQl7C,EAAKw9C,GAAO,IAAAxoD,EAAA7W;AAC9C,OAAOT,MAAMkD,IAAI8F,OAAM,WACnB,IAAIlD;AASJ,OARAA,EAAO,IAAIomD,OAAOuR,KAAKmD,SAAS,CAC5B96D,KAAM03D,EACNqD,UAAU,EACVN,YAAa,UACbC,cAAe,EACfC,aAAc,KAEb7B,OAAOt8C,GACLhL,EAAK5X,IAAI,YAAYyvB,WAAWrpB,KACxCg6D,IAGP3B,oBAAqB,SAAUC,EAAQ97C,GACnC,IAAIhP,EAAGE,EAAKojC,EAAQopB,EAAQtzD;AAE5B,IAAK4G,EAAI,EAAGE,GADZ9G,EAAMjM,KAAKf,IAAI,YACOiU,OAAQL,EAAIE,EAAKF,IAC/B5G,EAAI4G,GACNsrD,OAAO;AAab,OAXAn+D,KAAKmC,IAAI,UAAW,IACpBo9D,EAAS,IAAIj5D,OAAOmlD,OAAOuR,KAAK0C,OAAO,CACnC5oC,SAAU6mC,EACV97C,IAAKA,IAET7hB,KAAKf,IAAI,WAAWiM,KAAKq0D,IAEzBppB,EAAM,IACFjzB,SAAWq8C,EAAOzoC,SAASqlC,MAC/BhmB,EAAI/yB,UAAYm8C,EAAOzoC,SAASslC,MAChCp8D,KAAKmC,IAAI,QAASe,KAAKC,UAAUgzC,IAC1Bt0B,EAAIq7C,MAAMS,IAErB0C,gBAAgB,EAEhBC,gBAAiB/gE,MAAMukD,SAAS,gBAAiB,YAAa,cAAc,WAExE,GAAI9jD,KAAKf,IAAI,kBACT,OAAOM,MAAMkD,IAAI8jB,SAASvmB,KAAMA,KAAKugE,eAAgB,SAG7DC,kBAAmB,WACf,IAAI3+C,EAAK4+C,EAAK1hE;AACd8iB,EAAM7hB,KAAKf,IAAI,OACfF,EAAQmE,KAAKwD,MAAM1G,KAAKf,IAAI,UAC5BwhE,EAAM,IAAIn6D,OAAOmlD,OAAOuR,KAAKC,OAAOl+D,EAAMmkB,SAAUnkB,EAAMqkB,WAC1DvB,EAAI6+C,UAAUD,GACdzgE,KAAK09D,oBAAoB+C,EAAK5+C,GAC9BA,EAAIs7C,QAAQ,KAGhBwD,iBAAkBphE,MAAMukD,SAAS,SAAS,WACtC,IAAI8c,EAAUC,EAAQ53D,EAAMlK;AAO5B,GALA8hE,EAAS,CACL1E,KAFJp9D,EAAQmE,KAAKwD,MAAM1G,KAAKf,IAAI,WAEbikB,SACXk5C,IAAKr9D,EAAMqkB,WAGVpjB,KAAKf,IAAI,SASd,OAFA2hE,EAAW,IAAIt6D,OAAOmlD,OAAOuR,KAAK8D,SAClC73D,EAAOjJ,KACA4gE,EAASG,QACZ,CACIv4D,SAAUq4D,IAEd,SAAUzjB,EAAS98C,GACf,IAAI0gE,EAASC,EAAMngE,EAAKuiD;AACxB,GAAe,OAAX/iD,EAwCJ,OArC6C,IAAzC88C,EAAQ,GAAG8jB,mBAAmBhuD,QAC9B8tD,EAAU5jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,UACV7d,EAAMjG,EAAQ,GAAG8jB,mBAAmB,GAA9B,WACND,EAAO7jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,YACyC,IAAzC9jB,EAAQ,GAAG8jB,mBAAmBhuD,QACrC8tD,EACI5jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,UACA,IACA9jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,WAEJ7d,EAAMjG,EAAQ,GAAG8jB,mBAAmB,GAA9B,WACND,EAAO7jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,YACyC,IAAzC9jB,EAAQ,GAAG8jB,mBAAmBhuD,QACrC8tD,EACI5jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,UACA,IACA9jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,WAEJ7d,EAAMjG,EAAQ,GAAG8jB,mBAAmB,GAA9B,WACND,EAAO7jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,YACyC,IAAzC9jB,EAAQ,GAAG8jB,mBAAmBhuD,QACrC8tD,EACI5jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,UACA,IACA9jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,WACJ7d,EAAMjG,EAAQ,GAAG8jB,mBAAmB,GAA9B,WACND,EAAO7jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,WACPj4D,EAAK9G,IAAI,kBAAkB,KAE3B6+D,EACI5jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,UACA,IACA9jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,WACJ7d,EAAMjG,EAAQ,GAAG8jB,mBAAmB,GAA9B,WACND,EAAO7jB,EAAQ,GAAG8jB,mBAAmB,GAA9B,YAEXj4D,EAAK9G,IAAI,kBAAkB,GACvB8G,EAAKhK,IAAI,YACiB,mBAAbgK,EAAKhK,IAAqBgK,EAAKhK,IAAI,oBAAiB,KAC7D6B,EAAMmI,EAAKhK,IAAI,UAAUkiE,cAAcpiE,IACvC,EAAAqiE,EAAAC,iBAAgBvgE,GAAKmE,MAAK,SAAC8nB,GACvB,IAAIu0C;AAGJ,OAFAA,EAAY,IACFz0D,KAAO,QACV,EAAAu0D,EAAA9yC,aAAYvB,EAAM,IAAK,IAAK,IAAI9nB,MAAK,SAACqsB,GAEzC,OADAgwC,EAAUv0C,KAAOuE,GACV,EAAA8vC,EAAA9yC,aAAYgD,EAAS,IAAK,IAAK,IAAIrsB,MAAK,SAACqsB,GAE5C,OADAgwC,EAAUC,QAAUjwC,EACbroB,EAAK9G,IAAI,cAAe,CAACm/D,eAKtB,mBAAbr4D,EAAKhK,IAAqBgK,EAAKhK,IAAI,sBAAmB,IAC/DgK,EAAK9G,IAAI,gBAAiB6+D,IAEJ,mBAAb/3D,EAAKhK,IAAqBgK,EAAKhK,IAAI,kBAAe,IAC3DgK,EAAK9G,IAAI,YAAakhD,KAEA,mBAAbp6C,EAAKhK,IAAqBgK,EAAKhK,IAAI,mBAAgB,IACrDgK,EAAK9G,IAAI,aAAc8+D,QAvBtC;CAtDmC,IAAnCjhE,KAAKf,IAAI,uBACT6X,GAAGrU,IAAI8jB,SAASvmB,KAAMA,KAAKwgE,kBAAmB,SAmF1DD,eAAgB,WACZ,IAAIS,EAAmB/3D;AAEvB,GADAA,EAAOjJ,KACHA,KAAKf,IAAI,kBAAoBe,KAAKf,IAAI,cAGtC,OAFA+hE,EAAUhhE,KAAKf,IAAI,iBAAmB,KAAOe,KAAKf,IAAI,eAC3C,IAAIqH,OAAOmlD,OAAOuR,KAAK8D,UAClBC,QACZ,CACIC,QAASA,IAEb,SAAU5jB,EAAS98C,GACf,IAAIuhB;AACJ,GAAIvhB,IAAWgG,OAAOmlD,OAAOuR,KAAKwE,eAAeC,GAI7C,OAHA5/C,EAAM5Y,EAAKhK,IAAI,QACXyhE,UAAUtjB,EAAQ,GAAGskB,SAASl5D,UAClCS,EAAKy0D,oBAAoBtgB,EAAQ,GAAGskB,SAASl5D,SAAUqZ,GAChDA,EAAIs7C,QAAQ;;MCzcpB59D,MAAMyc,UAAU5c,OAAO,CAC1CsjB,IAAKnjB,MAAMC,OAAOC,UAClByN,MAAO3N,MAAMC,OAAOC,UACpBkiE,aAAcpiE,MAAMwB,SAASkhC,MAAM,iBACnCnf,eAAgBvjB,MAAMwB,SAClB,qBACA,qBACA,sBACA,sBACA,WAAY,IACJ+1B,EADIhyB,EAAA9E;AAER,OAAKA,KAAKf,IAAI,uBAMV63B,EAAW,CACP5T,SAAUljB,KAAKf,IAAI,sBACnBmkB,UAAWpjB,KAAKf,IAAI,uBACpBkgE,SAAUn/D,KAAKf,IAAI,uBAEvBM,MAAMkD,IAAI8V,KAAKvY,MAAM,WACjB,OAAO8E,EAAK3C,IAAI,QAASe,KAAKC,UAAU2zB,OAErCA,IAbPv3B,MAAMkD,IAAI8V,KAAKvY,MAAM,WACjB,OAAO8E,EAAK3C,IAAI,QAAS,SAEtB,SAcnBypB,SAAUrsB,MAAMwB,SAAS,mBAAoB,kBAAkB,WAAY,IAAA8V,EAAA7W;AACvE,OAAOT,MAAMmT,YAAYtT,OAAOG,MAAMqiE,mBAAmBh5D,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,EAAUi2C;AACd,GAAKz9C,EAAQnlB,IAAI,gBAiBjB,OAXA4iE,EAAgB3+D,KAAKwD,MAAM0d,EAAQnlB,IAAI,iBACvC2sB,EAAW/U,EAAK5X,IAAI,OAAOolB,YACvB,CACI83C,IAAK0F,EAAc3+C,SACnB4+C,IAAKD,EAAcz+C,WAEvB,CACI+4C,IAAKtlD,EAAK5X,IAAI,2BACd6iE,IAAKjrD,EAAK5X,IAAI,8BAGfyG,EAAQ,CACX3G,MAAO0S,KAAKK,MAAM8Z,GAAY;AAjB9BlmB,EAAQ,CACJ3G,MAAO;;MChDjBQ,MAAMyc,UAAU5c,OAAO,CACzCO,KAAMJ,MAAMC,OAAOC,UACnBsiE,SAAU,WAAY,IAAAj9D,EAAA9E;AAUlB,OARUA,KAAKf,IAAI,aAAa+kD,MAAM,CAClCnjD,OAAQ,MACRC,IAAK,kBACLG,KAAM,CACF+gE,gBAAiBhiE,KAAKf,IAAI,mBAC1ButC,KAAMxsC,KAAKf,IAAI,yBAGRgG,MAAK,SAAC0R,GACjB,OAAO7R,EAAK3C,IAAI,UAAW,IAAI5C,MAAMua,OAAOiH,SAASpK,EAAK23B,aAGlEiM,QAAS,CACL0nB,UAAW,WAEP,OADAjiE,KAAK+hE,WACE/hE,KAAKmC,IAAI,eAAe,IAEnC+/D,YAAa,WAET,OADA94D,EAAE,UAAU69C,MAAM,QACXjnD,KAAKmC,IAAI,eAAe;eC/B3CzD,OAAA,4BAAA,CAAA,UAAA,8CAAA,SAAAC,EAAAwjE,GAGAtjE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAkjE,EAAAjjE;MCDsBK,MAAMyc,UAAU5c;;ACJtC,IACIuJ,EAAU,GAAGA,UAIGpJ,MAAMyc,UAAU5c,OAAO,CACvCoiC,UAAWjiC,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,UACjBg3D,gBAAiB,WACb,IAAOt8C,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,GAEXglB,WAAW,EACXC,eAAgB9iE,MAAMwB,UAAS,WAC3B,IAAIuS;AA8BJ,OA7BAA,EAAO,GAEkB,aAArBtT,KAAKf,IAAI,SACTe,KAAKf,IAAI,aAAa0mC,UAAU,CAAC,uBAEjCryB,EAAKpI,KAAK,CACNnM,MAAO,WACP+iB,KAAM,kCAIW,aAArB9hB,KAAKf,IAAI,SACTe,KAAKf,IAAI,aAAa0mC,UAAU,CAAC,oBAEjCryB,EAAKpI,KAAK,CACNnM,MAAO,QACP+iB,KAAM,+BAIV9hB,KAAKf,IAAI,SAASsC,KAAK,0BACF,aAArBvB,KAAKf,IAAI,SACTe,KAAKf,IAAI,aAAa0mC,UAAU,CAAC,wBAEjCryB,EAAKpI,KAAK,CACNnM,MAAO,YACP+iB,KAAM,mCAGPxO,KAEXgvD,gBAAiB,CAAC,OAAQ,sBAE1BC,YAAY,EACZC,SAAS,EACTpjC,OAAQ,GACRqjC,SAAUljE,MAAMwB,SAAS,qBAAqB,WAC1C,OAAOf,KAAKf,IAAI,qBAAuB,QAE3CyjE,cAAenjE,MAAMwB,SAAS,YAAY,WACtC,OAAOxB,MAAMua,OAAOiH,SAAS,UAAY/gB,KAAKf,IAAI,qBAAuB,QAE7Eye,IAAKne,MAAMwB,SAAS,UAAU,WAC1B,OAAOf,KAAKf,IAAI,UAAUwQ,MAAM,QAEpCghC,SAAUlxC,MAAMwB,UAAS,WACrB,IAAmB2c;AAQnB,OAPAA,EAAM1d,KAAKf,IAAI,OAOR,EANAe,KAAKf,IAAI,SAAS6wC,QAAQ9vC,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,aAEjC0jE,YAAa7rD,GAAG/V,UAAS,WACrB,IAAI2c;AAQJ,OAPAA,EAAM1d,KAAKf,IAAI,OACRe,KAAKf,IAAI,SAAS6wC,QAAQ9vC,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,IACnC6hE,EAAoBC,EAAgB9e,EAAW+e,EAAYnjE,EADxBmF,EAAA9E;AA6CvC,OA3CA+jD,EAAI/jD,KAAKf,IAAI,aACbU,EAAOK,KAAKf,IAAI,QAChB4jE,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,qBAC1B/e,EAAEr7B,WAAW1oB,KAAKf,IAAI,SACTklB,QAAO,SAAC3gB,GAC1B,IAAIyI,EAAKC,EAAMixC;AACf,OAAMlxC,EAAMzI,EAAMqJ,KAAOlE,EAAQmC,KAAK83D,EAAoB32D,IAAQ,IAG9DzI,EAAM6K,SAASoT,aAIfje,EAAM6K,SAAS+sB,MAA0C,cAAlC53B,EAAM6K,SAAS+sB,KAAKC,aAIzCnvB,EAAOpH,EAAK7F,IAAI,QAAU,IAAMuE,EAAMqJ,OAAOlE,EAAQmC,KAAKg4D,EAAY52D,IAAS,KAI/EixC,EAAO35C,EAAMkH,KAAO/B,EAAQmC,KAAK+3D,EAAgB1lB,IAAS,QAAhE,QAIgBt7B,KAAI,SAAU5L,GAC9B,IAAItL;AAoBJ,OAnBAsL,EAAKsK,OAAS5gB,EAAK2C,EAAE,qBACjB2T,EAAK5H,SAAS00D,yBACd9sD,EAAK+sD,aAAc,GAEL,aAAd/sD,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,QAGfgtD,WAAY,WACR,IAAIp8D,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,GAEXihD,YAAa,SAAUC,EAAMjqD,GAAO,IAC5BynB,EAAQyiC,EAAS7/D,EAAMsP,EAAGlP,EAAIoP,EAAKswD,EAAoB5iD,EAAQvT,EAAOqiD,EAD1C14C,EAAA7W;AAIhC,GAFA2D,EAAKw/D,EAAKG,YACV/T,EAASvvD,KAAKf,IAAI,0BACb0E,EAAL,CAOA,GAJAuJ,EAAQlN,KAAKf,IAAI,SACjBsE,EAAOvD,KAAKf,IAAI,QAGsB,YAFtCwhB,EAASvT,EAAMsZ,WAAWjjB,EAAMI,IAErB1E,IAAI,mBACX,OAAOe,KAAKujE,OAAOJ,EAAMjqD;AAKzB,IAHAkqD,EAAUpjE,KAAKijE,cACfI,EAAY,IACF5iD,EAAOxhB,IAAI,OAASwhB,EAAO+iD,YAChC3wD,EAAI,EAAGE,EAAMqwD,EAAQlwD,OAAQL,EAAIE,EAAKF,IAEpB,eADnB8tB,EAASyiC,EAAQvwD,IACNhM,KAAuBlD,IAAO4rD,GAAmB,SAAThsD,EAI/Ckd,EAAOte,IAAIw+B,EAAO95B,IAAK85B,EAAO5hC,OAH9BiB,KAAKf,IAAI,WAAWoD,MAAMrC,KAAKf,IAAI,QAAQqD,EAAE;AAYrD,OANItC,KAAKf,IAAI,0BACTwhB,EAAOte,IAAI,WAAY,CACnBshE,YAAazjE,KAAKf,IAAI,2BAGpBwhB,EAAOomB,OACF5hC,MACX,WACI,OAAO4R,EAAK0sD,OAAOJ,EAAMjqD,MAE7B,SAACiO,GAEG,OADAtQ,EAAK6sD,UAAUjjD,EAAQ0G,EAAGk8C,GACnBxsD,EAAK0sD,OAAOJ,EAAMjqD,QAKzCwqD,UAAW,SAAUjjD,EAAQ0G,EAAGk8C,GAC5B,IAAIr3D,EAAM+3C,EAAGvgD,EAAOqD,EAAKoF;AAIzB,IAAKpF,KAHLk9C,EAAI/jD,KAAKf,IAAI,aACbgN,EAAMo3D,EAAU5iD,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,EAAOyX,qBACAl4B,KAAKf,IAAI,UAAUyvB,WACtBnvB,MAAMV,OAAO+J,OAAO,CAChBoM,IAAKyL,EACL9e,MAAOwlB,MAInBw8C,YAAapkE,MAAMwB,SAAS,QAAQ,WAChC,OAAOf,KAAKf,IAAI,aAAaypB,WAAW1oB,KAAKf,IAAI,YAErDskE,OAAQ,SAAUJ,EAAMjqD,GAUpB,OATAlZ,KAAKmC,IAAI,oBAAqBsP,KAAKG,OAAQsH,EAAQiqD,EAAKjwD,QAAUgG,EAAS,KAAQ,IAC/D,IAAhBiqD,EAAKjwD,SACLlT,KAAK2iB,QAAQkX,WAAW,SAAU75B,KAAKuD,KAAM,MAC7CvD,KAAKmC,IAAI,WAAW,GACpBnC,KAAKmC,IAAI,SAAU,IACfnC,KAAK+5B,OAAS/5B,KAAK2C,OAAOuQ,OAAS,GACnClT,KAAK+5B,SAGT/5B,KAAKf,IAAI,eACToD,MAAM,wBACNrC,KAAKmC,IAAI,WAAW,QACpBnC,KAAKmC,IAAI,SAAU,KAGhBnC,KAAKkjE,YAAYC,EAAMjqD,IAElCqhC,QAAS,CACLqpB,WAAY,SAAUr5D,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,IAAI+uD;AAKJ,OAJAnjE,KAAKmC,IAAI,aAAa,GACtBnC,KAAKmC,IAAI,SAAU2U,GAAG2V,KACtBzsB,KAAKmC,IAAI,oBAAqB,GAC9BghE,EAAOrsD,GAAG2V,EAAEzsB,KAAKf,IAAI,QACde,KAAKkjE,YAAYC,EAAMA,EAAKjwD,SAEvC4b,OAAQ,WACJ,OAAO9uB,KAAKmC,IAAI,cAAc,IAElCwU,KAAM,WACF,GAAI3W,KAAK6jE,SACL,GAAI7jE,KAAK+5B,MACL,OAAO/5B,KAAK+5B,aAGhB,GAAI/5B,KAAK8jE,QACL,OAAO9jE,KAAK8jE,WAIxBC,aAAc,SAAUhlE,EAAOkqB,GAC3B,OAAO1pB,MAAM4C,IAAInC,KAAM,UAAYipB,EAAWlqB;eC9T1DL,OAAA,kCAAA,CAAA,UAAA,uDAAA,SAAAC,EAAAqlE,GAGAnlE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA+kE,EAAA9kE;ACLA,IACIyJ,EAAU,GAAGA;AAQjBpJ,MAAM0kE,cAAc/9D,OAAO,CACvBC,kBAAmB,CAAC;MAGR5G,MAAMyc,UAAU5c,OAAO,CACnCoiC,UAAWjiC,MAAMC,OAAOC,QAAQ,qBAChCG,QAASL,MAAMC,OAAOC,UACtBE,KAAMJ,MAAMC,OAAOC,UACnBwqD,WAAY,OACZ90B,QAAS,KACTuhC,WAAY,CAAC,OACbC,kBAAmB,CAAC,iCACpBxwD,kBAAmB,CAAC,QACpB+9D,aAAa,EACbC,KAAM5kE,MAAMwB,UAAS,WACjB,GAAIf,KAAKf,IAAI,YACT,MAAO,aAIfmlE,MAAO7kE,MAAMwB,SACT,SACA,WACA,qBACA,cACA,uBACA,WACI,IAAIsjE,EAAatgB,EAAGugB,EAAeC,EAAgBt7D,EAAMwB;AA6BzD,OA5BAxB,EAAOjJ,KACPskE,EAAgBtkE,KAAKf,IAAI,YACzBslE,EAAiBvkE,KAAKf,IAAI,aAC1BolE,EAAcrkE,KAAKf,IAAI,UACvB8kD,EAAI/jD,KAAKf,IAAI,aACbwL,EAAOlL,MAAMktB,EAAE,IACfrjB,EAAAA,QAAEe,KAAKm6D,GAAe,SAAUruD,GAC5B,IAAIuuD;AACJ,GAAID,EAAetuD,KAAUsuD,EAAetuD,GAAMwuD,iBAC9CD,EAAYD,EAAetuD,IACjByuD,QAAUzuD,GAEhBzU,EAAAA,QAAUyN,aAAau1D,EAAUjhE,KAAMihE,EAAU7qC,SACjDt4B,EAAAA,QAAO6C,IAAIygE,SAEXplE,MAAM4C,IAAIqiE,EAAW,SAAUvuD,IAASouD,IAClCG,EAAUI,gBAAiB37D,EAAKhK,IAAI,gBACtC,OAAOwL,EAAKS,KAAKs5D,MAK7BzgB,EAAEpe,UAAU,CAAC,cACbl7B,EAAKS,KAAKq5D,EAAeM,aAExBxjE,EAAAA,QAAO6C,IAAIygE,QACZl6D,EAAOzK,KAAK8kE,YAAYr6D,IAErBA,KAGfq6D,YAAa,SAAUC,GACnB,IAAI76D,EAAO86D,EAAY/7D;AAGvB,OAFAA,EAAOjJ,MACPkK,EAAQlK,KAAKwhC,UAAUt3B,UAIvB86D,EAAa,GACTh+D,cAAgBA,aAAag+D,aAC7BA,EAAa9hE,KAAKwD,MAAMM,aAAag+D,aAEzC57D,EAAAA,QAAEe,KAAKD,GAAO,SAAUrD,EAAKoP,GACzB,IAAImlB,EAAMvuB;AAKV,GAJAuuB,GAAO,EACHzyB,EAAQmC,KAAKk6D,EAAYn+D,IAAQ,IACjCu0B,GAAO,IAEPA,IAAQnyB,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,MAETk4D,EAAM75D,KACT4L,GAAGjY,OAAO+J,OAAO,CACb84B,KAAM,iCACNujC,WAAYp+D,EAAI2M,UAAU,IAAI/G,cAC9B6yD,KAAM,mBACNx9C,KAAMjV,EACN+3D,cAAexpC,EACfspC,QAAS79D,UAIlB,GAAiB,MAAboP,EAAKpJ,KAEZ,OADAA,EAAOoJ,EAAKpJ,KACLk4D,EAAM75D,KACT4L,GAAGjY,OAAO+J,OAAO,CACb84B,KAAM,oBACNujC,WAAYp+D,EACZy4D,KAAM,mBACNx9C,KAAMjV,EACN+3D,cAAexpC,EACfspC,QAAS79D,QAKlBk+D,GA9CIA,GAoDfC,WAAYluD,GAAG2V,EAAE,IACjBy4C,QAAS3lE,MAAMwB,SAASokE,MAAM,OAAQ,WACtCC,KAAM7lE,MAAMwB,SAASokE,MAAM,OAAQ,QACnC5qB,QAAS,CACL8qB,UAAW,WAEP,OADArlE,KAAKmC,IAAI,YAAY,GACdiH,EAAAA,QAAEg8D,KAAK,UAElBE,SAAU,WACN,OAAOtlE,KAAKq0D,eAAe,aAE/BkR,kBAAmB,WAGf,cAFOv+D,aAAa,8BACpBA,aAAaG,WAAW,6BACjBqB,SAASuB,UAEpBy7D,qBAAsB,SAAUvvD,GAC5B,OAAOA,EAAKo+C,eAAe,kBAE/BoR,cAAe,SAAUC,GACrB,IAAI7pC;AAKJ,OAJAA,EAAI6pC,EAAMvpC,SAAS,iBAAiB,GAAM7J,MAAM,WAChDtyB,KAAKmC,IAAI,aAAc2U,GAAG2V,EAAEoP,IAC5B70B,aAAaM,QAAQ,aAAcpE,KAAKC,UAAU04B,IAClD77B,KAAKq0D,eAAe,eACbr0D,KAAK04B,KAAK;;MC1ICn5B,MAAMyc,UAAU5c,OAAO,CACjDQ,QAASL,MAAMC,OAAOC,UACtBukD,MAAOzkD,MAAMC,OAAOC,UACpBkmE,UAAW7uD,GAAG2V,EAAE,IAChBi6B,iBAAkB,WACd,IAAIz9C;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,QAAEw8D,UAAU3kE,IAEzB,MAAO8V,GAEL,MADQA,EACF,IAAIxX,MAAMgI,MAAM,0CAA4CtG,GAEtE,GAAIgY,EACA,OAAO1Z,MAAMkD,KAAI,WACb,IAASojE;AAET,GAA0B,OAD1BA,EAAOtmE,MAAMV,OAAO+J,OAAOqQ,IAClB6sD,cAIT,OADMD,EAAKC,cACAl/D,SAAQ,SAAUm/D,GACzB,GAAIA,EAAIC,OACJ,OAAO/8D,EAAK08D,UAAUj3C,WAAWq3C;;MC3C/CxmE,MAAMyc,UAAU5c,OAAO,CACzCQ,QAASL,MAAMC,OAAOC,UACtBukD,MAAOzkD,MAAMC,OAAOC,UACpB01B,QAAS,GACT8wC,SAAUnvD,GAAG2V,EAAE,IACfi6B,iBAAkB,WACd,GAAI1mD,KAAKf,IAAI,qBAGT,OAFAe,KAAKmC,IAAI,iBAAkBnC,KAAKf,IAAI,sBACpCe,KAAKkmE,YACE,EAAAvf,EAAAznD,SAAE,gBAAgB+nD,MAAM,SAGvCif,SAAU,WACN,IAAIC,EAAcl9D,EAAMrJ;AAExB,KADAA,EAAUI,KAAKf,IAAI,aAE8B,IAAzCe,KAAKwhC,UAAU4kC,aAAaxmE,GAMpC,OAFAqJ,EAAOjJ,KACPmmE,EAAenmE,KAAKf,IAAI,yBACjBe,KAAKf,IAAI,SACXonE,UAAU,OAAQrmE,KAAKf,IAAI,sBAC3BgG,MAAK,SAAUsK,GACZ,IAAIsD,EAAGE,EAAKkzD,EAAUvvB,EAAM4vB;AAE5B,IADAL,EAAW,GACNpzD,EAAI,EAAGE,EAAMxD,EAAI2D,OAAQL,EAAIE,EAAKF,IACnC6jC,EAAOnnC,EAAIsD,IACXyzD,EAAW,IACFz5D,KAAO6pC,EAAKz3C,IAAI,YAAc,IAAMy3C,EAAKz3C,IAAI,aAElC,MAAhBknE,IAC8C,IAA1CA,EAAax9D,QAAQ+tC,EAAKz3C,IAAI,SAC9BqnE,EAASC,QAAS,GAG1BN,EAAS/6D,KAAKo7D;AAElB,OAAOr9D,EAAK9G,IAAI,WAAY8jE,OAGxC1rB,QAAS,CACLisB,mBAAoB,SAAUxxD,GAC1B,IAAIzF,EAAKoV;AAWT,IATAA,EAAS,IACFkyB,MAAQ7hC,EAAIrR,GACnB3D,KAAKf,IAAI,SAAS8F,QAAQ,YAAa,CACnC2F,KAAM,OACNzJ,KAAM0jB,KAEVpV,EAAMvP,KAAKf,IAAI,UACX81B,SAAS,GACb/0B,KAAKmC,IAAI,iBAAkBnC,KAAKf,IAAI,sBACjB,IAAfsQ,EAAI2D,OACJ,OAAO,EAAAyzC,EAAAznD,SAAE,gBAAgB+nD,MAAM;eCpE/CvoD,OAAA,8BAAA,CAAA,UAAA,+CAAA,SAAAC,EAAA8nE,GAGA5nE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAwnE,EAAAvnE;MCCwBK,MAAMyc,UAAU5c,OAAO,CAE3CwnB,QAAS,KACT8/C,WAAW,EACXC,WAAYpnE,MAAMqjB,GAAG,OAAQ,mBAAoB,WAAY,IACrDgE,EAASggD,EAASxnC,EADmCt6B,EAAA9E;AAIzD,OAFAo/B,EAASp/B,KAAKf,IAAI,UAClB2nB,EAAU5mB,KAAKf,IAAI,WACfmgC,GACAwnC,EAAU,EACHx9D,EAAAA,QAAEe,KAAKi1B,GAAQ,SAACv4B,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,QAASykE,UAD/B,MAKGrnE,MAAMkD,IAAI8V,KAAKvY,MAAM,WACxB,OAAOA,KAAKmC,IAAI,SAAU2U,GAAG2V,EAAE,WAI3Co6C,aAAc,WACV,IAAIjgD,EAASwY;AAQb,OAPAA,EAAStoB,GAAG2V,EAAE,IACd7F,EAAU5mB,KAAKf,IAAI,WACnBmK,EAAAA,QAAEe,KAAKyc,EAAQE,OAAO,UAAU,SAACjgB,EAAKoP,GAClC,GAAIA,EAAKhX,IAAI,UACT,OAAOmgC,EAAO1Q,WAAWzY,EAAKhX,IAAI,UAGnCM,MAAMkD,IAAI8V,KAAKvY,MAAM,WACxB,OAAOA,KAAKmC,IAAI,SAAUi9B,OAGlC0nC,eAAgB,WACZ,IAAIlgD,EAASggD;AAGb,OAFAhgD,EAAU5mB,KAAKf,IAAI,WACnB2nE,EAAU,EACHx9D,EAAAA,QAAEe,KAAKyc,EAAQE,OAAO,UAAU,SAACjgB,EAAKoP,GACzC,GAAIA,EAAKhX,IAAI,UACT,OAAOgX,EAAK9T,IAAI,QAASykE,SAIrCrsB,QAAS,CACLx6B,MAAO,SAAUgnD,GACb,IAAI3nC;AACJ,OAAIp/B,KAAKf,IAAI,qBACTe,KAAKf,IAAI,WAAW2H,SAAQ,SAACogE,GACzB,OAAOA,EAAI7kE,IAAI,UAAU,MAE7B4kE,EAAO5kE,IAAI,UAAU,QACrBnC,KAAK6mE,iBAGTznC,EAASp/B,KAAKf,IAAI,UACd8nE,EAAO9nE,IAAI,WACX8nE,EAAO5kE,IAAI,QAAS,MACpB4kE,EAAO5kE,IAAI,UAAU,GACjBnC,KAAKf,IAAI,cACTe,KAAK8mE,mBAGL9mE,KAAKf,IAAI,cACT8nE,EAAO5kE,IAAI,QAASi9B,EAAOlsB,OAAS,GAExC6zD,EAAO5kE,IAAI,UAAU,IAElBnC,KAAK6mE;;MC9EAtnE,MAAMyc,UAAU5c,OAAO,CAC3CO,KAAMJ,MAAMC,OAAOC,UACnBi3D,WAAY,CAAC,2BAEbz1D,KAAM1B,MAAMwB,SAAS,MAAO,WAAW,WACnC,IAAI4pC,EAAKhrC,EAAMsnE,EAASC;AAKxB,OAJAvnE,EAAOK,KAAKf,IAAI,QAChB0rC,EAAM3qC,KAAKf,IAAI,OACfgoE,EAAUjnE,KAAKf,IAAI,WACnBioE,EAASv8B,EAAM3qC,KAAKf,IAAI,cACjB,CACH,CAAC,QAAS,SACV,CAACU,EAAK2C,EAAE,sCAAuCqoC,GAC/C,CAAChrC,EAAK2C,EAAE,uCAAwC4kE,GAChD,CAACvnE,EAAK2C,EAAE,wCAAyC2kE,OAIzDza,OAAQ,0BAER7hD,QAAS,CACLw8D,QAAS,GACTvb,UAAW,CACP13B,MAAO,MACP23B,OAAQ,OAEZA,OAAQ,IACR33B,MAAO,IACPkzC,kBAAmB,CACf3K,MAAO,QACP7P,SAAU,IAEdya,aAAc;eCxCtB3oE,OAAA,wCAAA,CAAA,UAAA,8DAAA,SAAAC,EAAA2oE,GAGAzoE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAqoE,EAAApoE;ACLA,IAAMqoE,EAAUlmE,EAAAA,QAAO,4BAA8B,KAEtCmmE,EAAAA,QAAoBpoE,OAAO,CACxCW,KADwC,WAEtCC,KAAKC,OAALC,MAAAF,KAAeG,WACfH,KAAKynE,MAAQF,EAAQE,OAAS,MAC9BznE,KAAK0nE,KAAO,CACR/9D,QAAW,UACXk+B,QAAW,UACXxgC,KAAQ,OACR1F,MAAS;;MCJMpC,MAAMyc,UAAU5c,OAAO,CAE1CiL,QAASyM,GAAG2V,EAAE,IACd7sB,QAASkX,GAAGtX,OAAOC,UACnBE,KAAMmX,GAAGtX,OAAOC,UAChBkoE,YAAa7wD,GAAG/V,UAAS,WACrB,OAAOf,KAAKf,IAAI,kDAGpB8mD,mBAAoBjvC,GAAG/V,SAAS,cAAc,WAC1C,IAAI8R,EAAGE,EAAK8sB,EAAQt1B,EAAQF,EAAS27C;AAGrC,IAFA37C,EAAUrK,KAAKf,IAAI,WACnB+mD,EAAMlvC,GAAG2V,EAAE,IACN5Z,EAAI,EAAGE,EAAM1I,EAAQ6I,OAAQL,EAAIE,EAAKF,IAGnCgtB,EADiB,MADrBt1B,EAASF,EAAQwI,IACP,GAKVmzC,EAAI96C,KAAK,CACL2B,KAAMtC,EAAM,KACZ5G,GAAI4G,EAAM,GACVs1B,OAAQA,EACR6yB,SAAUjhD,KAAK+a,SAAS3hB,SAAS,IAAI+8D,OAAO;AAGpD,OAAO5hB,KAGXE,SAAU,KAEVE,QAAS,KAET3kC,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,KAAK04B,KAAK,SAGrBmO,KAAM,WACF,IAAIt3B,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,KAAK6mC,KAAK7mC,KAAKf,IAAI,aAIlC4oE,aAAc,SAAUv4D,GACpB,IAAIuD,EAAGE,EAAWxI,EAAiB0B,EAAKqiC;AACxC,GAAoB,KAAhBh/B,EAAG,KACH,OAAO/P,MAAM4C,IAAImN,EAAK,KAAM;AAE5B,IAAKA,EAAG,OAAY,CAgBhB,IATe,MALfg/B,EADOh/B,EAAG,KAELzE,WACAy7B,aACAl3B,QAAQ,YAAa,IACrBw4D,OAAO,EAAG,OAEXt5B,EAAS78B,KAAK+a,SACT3hB,SAAS,IACTuE,QAAQ,WAAY,IACpBw4D,OAAO,EAAG,IAGT5nE,KAAKf,IAAI,WAEd4T,EAAI,EAAGE,GADZ9G,EAAMjM,KAAKf,IAAI,uBACOiU,OAAQL,EAAIE,EAAKF,IAEnC,IADAtI,EAAS0B,EAAI4G,IACH,WAAiBvD,EAAG,UACtB/E,EAAM,KAAW+jC,EAAQ,CACzBA,GACI,IACA78B,KAAK+a,SACA3hB,SAAS,IACTuE,QAAQ,WAAY,IACpBw4D,OAAO,EAAG;AACnB,MAIZ,OAAOroE,MAAM4C,IAAImN,EAAK,KAAMg/B,MAK5CvuC,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,CAKvC8jC,YAAa,KACbyhB,eAAgBplD,MAAMwB,SAAS87C,GAAG,YAAa,GAC/CK,MAAO39C,MAAMwB,SAAS,YAAa,eAAe,WAC9C,IAAImiC,EACAvuB,EACAooC,EACAC,EACAC,EACAH,EACAI,EACAjxC,EAEAkxC,EAEA/oC;AA0CJ,OAzCA0oC,EAAY98C,KAAKf,IAAI,aACrBikC,EAAcljC,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,EAAW/Z,EACPA,EAAc,IACd+Z,EAAW,GAEX/Z,EAAc,EAAI4Z,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,MAEzB4qB,yBAA0BvoE,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,SAAUviB,EAAGC,GACtB,OAAOD,EAAIC,GAERmiB,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,SAAUnd,GAClB,GAAa,QAATA,EAIJ,OADA/nC,KAAKmC,IAAI,cAAe4lC,GACpB/nC,KAAKf,IAAI,cACFe,KAAKf,IAAI,aAATe,CAAuBA,KAAKf,IAAI,qBAD3C;eCjIZP,OAAA,2BAAA,CAAA,UAAA,6CAAA,SAAAC,EAAAopE,GAGAlpE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA8oE,EAAA7oE;ACRA,IAAMid,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,suBAAAzZ,KAAA,CAAA0Z,WAAA,oEAGbhd,MAAAid;;MCMKjd,MAAMyc,UAAU5c,OAAO4oE,EAAAA,QAAM,CAC7CroE,KAAMJ,MAAMC,OAAOC,UACnBG,QAASL,MAAMC,OAAOC,UACtB6vD,IAAK/vD,MAAMC,OAAOC,UAClB85B,UAAWh6B,MAAMC,OAAOC,UAExBM,KAN6C,WAOzCC,KAAKC,OAALC,MAAAF,KAAeG,WAEfH,KAAKioE,kBAAoBjoE,KAAKioE,kBAAkB91C,KAAKnyB,OAGzD0mD,iBAAkB,WAAY,IAAA5hD,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,qBAAqBw9C,SAAS,aAE5B9hD,EAAK7F,IAAI,eACT;AAEJ6F,EAAK3C,IAAI,aAAa,QAIlC+lE,WAAW,EACXC,UAAW5oE,MAAMwB,SAAS,OAAQ,uBAAuB,WACrD,IAAI8R,EAAGE,EAAK2uB,EAAMqjC,EAAO1/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,GADZgyD,EAAQ/kE,KAAKooE,eACWl1D,OAAQL,EAAIE,EAAKF,IAAK,CAE1C,GADA6uB,EAAOqjC,EAAMlyD,IACkB,IAA3BxN,EAAKsD,QAAQ,SACb,OAAO;AAEX,GAAIpJ,MAAMuD,QAAQ4+B,EAAKA,QAAyC,IAAhCr8B,EAAKsD,QAAQ+4B,EAAKA,KAAK,IACnD,OAAO,EAGf,OAAO,MAEX2mC,SAAU9oE,MAAMwB,SACZ,sBACA,qBACA,gBACA,WACI,GAAKf,KAAKf,IAAI,uBAGd,OAAOe,KAAKooE,iBAGpBE,UAAW/oE,MAAMwB,SACb,sBACA,qBACA,gBACA,WACI,IAAUgkE,EAAuB/xC;AACjC,GAAKhzB,KAAKf,IAAI,uBAId,SADA8lE,EAAQ/kE,KAAKooE,eACHl1D,OAAS,KAsBH,CAnBL,WACH,IAAIL,EAAGE,EAAKqqC;AAEZ,IADAA,EAAU,GACLvqC,EAAI,EAAGE,EAAMgyD,EAAM7xD,OAAQL,EAAIE,EAAKF,GAAK,EAC1CmgB,EAAI+xC,EAAMlyD,GACVuqC,EAAQlyC,KAAK8nB;AAEjB,OAAOoqB,EAPJ,GASC,WACJ,IAAIvqC,EAAGE,EAAK9G,EAAKmxC;AAGjB,IADAA,EAAU,GACLvqC,EAAI,EAAGE,GAFZ9G,EAAM84D,EAAMx/D,MAAM,IAEI2N,OAAQL,EAAIE,EAAKF,GAAK,EACxCmgB,EAAI/mB,EAAI4G,GACRuqC,EAAQlyC,KAAK8nB;AAEjB,OAAOoqB,EARH,OAepBmrB,iBAAkBhpE,MAAMwB,SACpB,sBACA,qBACA,gBACA,WACI,IAAIgkE;AACJ,GAAK/kE,KAAKf,IAAI,uBAKd,OAFA8lE,EAAQ/kE,KAAKooE,eACPpqB,UACC+mB,KAIfkD,kBAAmB,WACf,OAAOjoE,KAAKmC,IAAI,uBAAwB,CAAEs3B,SAAU,eAExD8gB,QAAS,CACLiuB,eAAgB,WACZ,IAAIxoE,KAAKf,IAAI,eAIb,OADAe,KAAKq0D,eAAe,cACb,GAEXoU,cAAe,WAEX,OADAzoE,KAAKq0D,eAAe,oBACb,GAEXqU,aAAc,WAaV,OAZAnpE,MAAMkD,IAAI8F,MACNvI,MACA,WACI,IAAI2oE;AAEJ,OADAA,EAAOv/D,EAAEpJ,KAAKf,IAAI,YAAY4F,KAAK,wBAAwB,IAInD8jE,EAAKvP,UAAYuP,EAAK3rD,aAFnBhd,KAAK04B,KAAK,kBAIzB,KAEG,GAEXkwC,YAAa,SAAUlnC,GACnB,OAAOp7B,OAAOmzC,KAAK/X,EAAM;;AClKrChjC,OAAA,yCAAA,CAAA,UAAA,4DAAA,SAAAC,EAAAkqE,GAGAhqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA4pE,EAAA3pE,cCTAR,OAAA,8CAAA,CAAA,UAAA,iEAAA,SAAAC,EAAAmqE,GAGAjqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA6pE,EAAA5pE,cCTAR,OAAA,sCAAA,CAAA,UAAA,yDAAA,SAAAC,EAAAoqE,GAGAlqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA8pE,EAAA7pE,cCTAR,OAAA,2CAAA,CAAA,UAAA,8DAAA,SAAAC,EAAAmqE,GAGAjqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA6pE,EAAA5pE,cCTAR,OAAA,gCAAA,CAAA,UAAA,mDAAA,SAAAC,EAAAqqE,GAGAnqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA+pE,EAAA9pE,cCTAR,OAAA,qCAAA,CAAA,UAAA,wDAAA,SAAAC,EAAAmqE,GAGAjqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA6pE,EAAA5pE,cCTAR,OAAA,oCAAA,CAAA,UAAA,uDAAA,SAAAC,EAAAsqE,GAGApqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAgqE,EAAA/pE,cCTAR,OAAA,mDAAA,CAAA,UAAA,gFAAA,SAAAC,EAAAuqE,GAGArqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAiqE,EAAAhqE,cCTAR,OAAA,uCAAA,CAAA,UAAA,wDAAA,SAAAC,EAAAwqE,GAGAtqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAkqE,EAAAjqE,cCTAR,OAAA,+CAAA,CAAA,UAAA,gEAAA,SAAAC,EAAAyqE,GAGAvqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAmqE,EAAAlqE,cCTAR,OAAA,0CAAA,CAAA,UAAA,uEAAA,SAAAC,EAAA0qE,GAGAxqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAoqE,EAAAnqE,cCTAR,OAAA,2DAAA,CAAA,UAAA,wFAAA,SAAAC,EAAA2qE,GAGAzqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAqqE,EAAApqE,cCTAR,OAAA,8BAAA,CAAA,UAAA,+CAAA,SAAAC,EAAA4qE,GAGA1qE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAsqE,EAAArqE,cCTAR,OAAA,6CAAA,CAAA,UAAA,8DAAA,SAAAC,EAAA6qE,GAGA3qE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAuqE,EAAAtqE,cCTAR,OAAA,iDAAA,CAAA,UAAA,kEAAA,SAAAC,EAAA8qE,GAGA5qE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAwqE,EAAAvqE,cCTAR,OAAA,sCAAA,CAAA,UAAA,uDAAA,SAAAC,EAAA+4D,GAGA74D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAy4D,EAAAx4D,cCTAR,OAAA,0CAAA,CAAA,UAAA,2DAAA,SAAAC,EAAA+qE,GAGA7qE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAyqE,EAAAxqE,cCTAR,OAAA,iDAAA,CAAA,UAAA,kEAAA,SAAAC,EAAAgrE,GAGA9qE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA0qE,EAAAzqE,cCTAR,OAAA,6CAAA,CAAA,UAAA,8DAAA,SAAAC,EAAAirE,GAGA/qE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA2qE,EAAA1qE,cCTAR,OAAA,sCAAA,CAAA,UAAA,uDAAA,SAAAC,EAAAyqE,GAGAvqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAmqE,EAAAlqE;MCDuBK,MAAMyc,UAAU5c,OAAO,CAC1C8N,MAAO3N,MAAMC,OAAOC,UACpBoqE,SAAU,KACVC,aAAcvqE,MAAMukD,SAAS,aAAa,WACtC,OAAOvkD,MAAMkD,IAAIkjD,KAAK3lD,KAAMA,KAAK+pE,yBAGrCtT,gBAP0C,WAQtCz2D,KAAKC,OAALC,MAAAF,KAAeG,WACXH,KAAKf,IAAI,cACTM,MAAMkD,IAAIkjD,KAAK3lD,KAAMA,KAAK+pE,uBAGlCA,qBAAsB,WAClB,IAAI9gE,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,UACtB+hC,UAAWjiC,MAAMC,OAAOC,QAAQ,qBAChCukD,MAAOzkD,MAAMC,OAAOC,UACpBghB,OAAQlhB,MAAMwB,SAAS,WAAW,WAC9B,OAAOf,KAAKf,IAAI,SAASgtB,WAAW,UAAWjsB,KAAKf,IAAI,eAE5D+qE,GAAIzqE,MAAMwB,SAAS,WAAW,WAC1B,IAAIgjD,EAAG3/B;AAGP,GAFA2/B,EAAI/jD,KAAKf,IAAI,aACbmlB,EAAUpkB,KAAKf,IAAI,WACf8kD,EAAEkmB,aAAa,MACf,OAAOjqE,KAAKf,IAAI,SAASoE,MAAM,KAAM,CACjC+gB,QAASA,EACThX,KACIyC,SAAS0F,SAAS,EAAG,UAAUpE,OAAO,cACtC,IACAtB,SAASsB,OAAO,mBAIhC+4D,QAAS3qE,MAAMwB,SAAS,MAAM,WAC1B,IAAI07D,EAAO0N,EAAMC;AAIjB,OAHAA,EAAMpqE,KAAKf,IAAI,MACfkrE,EAAOnqE,KAAKqqE,cAAcD,EAAK,aAC/B3N,EAAQz8D,KAAKsqE,eAAeH,GACrB,CACHA,KAAMA,EAAKI,QAAQ,GAAK,IACxB9N,MAAOA,MAGf+N,IAAKjrE,MAAMwB,SAAS,WAAW,WAC3B,IAAIgjD,EAAG3/B;AAGP,GAFA2/B,EAAI/jD,KAAKf,IAAI,aACbmlB,EAAUpkB,KAAKf,IAAI,WACf8kD,EAAEkmB,aAAa,OACf,OAAOjqE,KAAKf,IAAI,SAASoE,MAAM,MAAO,CAClC+gB,QAASA,EACThX,KACIyC,SAAS0F,SAAS,EAAG,UAAUpE,OAAO,cACtC,IACAtB,SAASsB,OAAO,mBAIhCs5D,SAAUlrE,MAAMwB,SAAS,OAAO,WAC5B,IAAI07D,EAAO0N,EAAMO;AAIjB,OAHAA,EAAO1qE,KAAKf,IAAI,OAChBkrE,EAAOnqE,KAAKqqE,cAAcK,EAAM,cAChCjO,EAAQz8D,KAAKsqE,eAAeH,GACrB,CACHA,KAAMA,EAAKI,QAAQ,GAAK,IACxB9N,MAAOA,MAGf6N,eAAgB,SAAUvrE,GACtB,OAAIA,GAAS,GACF,cACAA,GAAS,GACT,gBACAA,EAAQ,GACR,aAEA,WAGfsrE,cAAe,SAAUppE,EAAMuC,GAC3B,IAAImnE;AACJ,OAAuC,IAAnC1pE,EAAKhC,IAAI,sBACF,KAEX0rE,EAAQ,EACR1pE,EAAK2F,SAAQ,SAAUqP,GACnB,OAAQ00D,GAAS10D,EAAKhX,IAAIuE,MAEvBmnE,EAAQ1pE,EAAKhC,IAAI,wBAE5B8sD,OAAQj1C,GAAG/V,SAAS,WAAW,WAC3B,IAAIgjD,EAAG3/B;AAGP,GAFA2/B,EAAI/jD,KAAKf,IAAI,aACbmlB,EAAUpkB,KAAKf,IAAI,WACf8kD,EAAEkmB,aAAa,iBACf,OAAOjqE,KAAKf,IAAI,SAASoE,MAAM,gBAAiB,CAC5C+gB,QAASA,EACThX,KACIyC,SAAS0/B,QAAQ,QAAQp+B,OAAO,cAChC,IACAtB,SAAS2/B,MAAM,QAAQr+B,OAAO,cAClCyM,SAAU,CAAC,iBAAkB,gBAAiB,mBAI1DgtD,aAAcrrE,MAAMwB,UAAS,WAUzB,MARM,CACF8pE,UAAW7qE,KAAK8qE,UAAU,CAAC,SAAU,iBACrC3yD,KAAM,CACFnY,KAAK8qE,UAAU,CAAC,eAAgB,iBAChC9qE,KAAK8qE,UAAU,CAAC,WAAY,iBAC5B9qE,KAAK8qE,UAAU,CAAC,UAAW,sBAKvCA,UAAW,SAAU3wD,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,EAAE/nB,YAAYz4B,EAAMC,IACpBye,EAAI/W,KAAK1H;AAGjB,OAAOye,GAEXs4B,QAAS,CACLwwB,YAAa,WACT,OAAOzkE,OAAOmzC,KACVz5C,KAAKf,IAAI,SAASmC,KACd,8BACApB,KAAKf,IAAI,iCACT,cACAe,KAAKf,IAAI,qBACb,WAGR+rE,UAAW,WACP,IAAIrC;AAGJ,OAFAA,EAAOv/D,EAAEpJ,KAAKf,IAAI,YAAY4F,KAAK,yBAAyB,GAC5D7E,KAAKq0D,eAAe,YACb90D,MAAMkD,IAAI8F,MACbvI,MACA,WACI,OAAQ2oE,EAAKvP,UAAYuP,EAAK3rD,eAElC,KAGRiuD,mBAAoB,WAChB,OAAOjrE,KAAKmC,IAAI,UAAW;;MClJb5C,MAAMyc,UAAU5c,OAAO,CAC7C8rE,YAAap0D,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,UACT+hC,UAAWjiC,MAAAC,OAAAC,QAAQ,qBACnButC,oBAAqBztC,MAAAC,OAAAC,UACrBC,QAASH,MAAAC,OAAAC,UACT0rE,OAAQ5rE,MAAAC,OAAAC,UACR2rE,cAAe7rE,MAAAC,OAAAC,UAEfkmE,UAAWpmE,MAAAktB,EAAE,IAEbi6B,iBAV4C,WAUzB,IAAA5hD,EAAA9E;AACf,IAAKT,MAAM2J,QACP,OAAO3J,MAAAkD,IAAA8F,MACHvI,MACA,WACI,OAAO8E,EAAKumE,kBAEhB,MAKZ9wB,QAAS,CACL+wB,WADK,WAED,OAAO/rE,MAAA4C,IAAInC,KAAM,QAAQ,KAIjCqrE,cA5B4C,WA4B5B,IAAAx0D,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,4CACpBurE,EAAYhsE,MAAAN,IAAIe,KAAM;AAG5B,GAAKuL,GAAaiC,GAAY+9D,EAA9B,CAIA,IAAMvhE,EAAUhK,KAAKorE,cAAcI,YAAY,CAC3Ch+D,QAAAA,EACA+9D,UAAAA,EACAE,MAAOlgE,EACPmgE,KAAK,IAEHC,EAAYpsE,MAAAktB,EAAE,IACdm/C,EAAcrsE,MAAAktB,EAAE,IAChBo/C,EAAStsE,MAAAN,IAAIe,KAAM,0BAA4B,iBAC/C8rE,EAAavsE,MAAAN,IAAIe,KAAM,0BAA4B,wBACnD+rE,EAAexsE,MAAAktB,EAAEltB,MAAAN,IAAIe,KAAM,uBAAuBwG,QAAQqlE;AAEhE,OAAO7hE,EAAQ/E,MACX,SAAChE,GAEG,GAAY,MAARA,EAAc,CACd,IAAMi4D,EAAMj4D,EAAKA;AACjB,GAAW,MAAPi4D,EAAa,CACbA,EAAItyD,SAAQ,SAACm/D,GACT,IAAsC,IAAlCgG,EAAapjE,QAAQo9D,EAAIpiE,IAGzB,OAFAoiE,EAAI3gE,QAAU7F,MAAAua,OAAAiH,SAASglD,EAAI3gE,SAC3B2gE,EAAIiG,kBAAoBzsE,MAAAua,OAAAiH,SAASglD,EAAIiG,oBAClB,IAAfjG,EAAIC,QACJzmE,MAAAN,IAAI4X,EAAM,aAAa6X,WAAWq3C,GAC3B4F,EAAUzgE,KAAK66D,EAAIpiE,KAEnBioE,EAAY1gE,KAAK66D;AAKpC,IAAMkG,EAAWF,EAAanrE,OAAO+qE;AAGrC,OADApsE,MAAAN,IAAI4X,EAAM,uBAAuBq1D,SAASL,EAAQI,GAC3C1sE,MAAAN,IAAI4X,EAAM,uBAAuBq1D,SAASJ,EAAYF,QAKzE,SAAU9hE,GACN,MAAM,IAAAvK,MAAAgI,MACF,6BACK,WACG,IACI,OAAOrE,KAAKC,UAAU2G,GACxB,MAAOnI,GACL,OAAQmI,EAASnI,GAJxB;eClHzBjD,OAAA,oCAAA,CAAA,UAAA,qDAAA,SAAAC,EAAAwtE,GAGAttE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAktE,EAAAjtE,cCTAR,OAAA,8BAAA,CAAA,UAAA,+CAAA,SAAAC,EAAAytE,GAGAvtE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAmtE,EAAAltE;MCGuBK,MAAMyc,UAAU5c,OAAO,CAC1C8N,MAAO4J,GAAGtX,OAAOC,UACjBi3D,WAAY,GACZvwD,kBAAmB,CAAC,QAAS,MAAO,gBACpCiO,WAAO,EACPO,SAAK,EACL03D,YAAY,EACZl7D,OAAQtB,OAAOy8D,aAAan8D,eAAe,KAC3Co8D,aAAc,aACdC,UAAWjtE,MAAMwB,SAAS,QAAS,MAAO,SAAS,WAC/C,IAAI4T,EAAKxD,EAAQo7D,EAAc98D,EAAO2E,EAAOrV;AAK7C,OAJAoS,EAASnR,KAAKf,IAAI,UAClBstE,EAAevsE,KAAKf,IAAI,gBACxBmV,EAAQpU,KAAKf,IAAI,SACjB0V,EAAM3U,KAAKf,IAAI,QACVF,EAAQiB,KAAKf,IAAI,WAClBwQ,EAAQ1Q,EAAM0Q,MAAM,KAEhBI,OAAOJ,EAAM,GAAI88D,GAAcp7D,OAAOA,GACtCnR,KAAKf,IAAI,aACT4Q,OAAOJ,EAAM,GAAI88D,GAAcp7D,OAAOA,IAElC5R,MAAMqT,QAAQwB,IAAW7U,MAAMqT,QAAQ+B,GAO5C,GALC9E,OAAOuE,EAAOm4D,GAAcp7D,OAAOA,GACnCnR,KAAKf,IAAI,aACT4Q,OAAO8E,EAAK43D,GAAcp7D,OAAOA,MAK7Cs7D,MAAO,KACPC,MAAO,KACPC,UAAW,MACXC,kBAAkB,EAClBrV,YAAa,KACbsV,cAAe,CAAC,OAChBC,WAAY,KACZC,YAAa,KACbloD,MAAO,CACH5S,KAAM,KAEV+6D,OAAQ,CACJC,MAAO,CAACp9D,SAAUA,UAClBq9D,UAAW,CAACr9D,SAAS0F,SAAS,EAAG,QAAS1F,SAAS0F,SAAS,EAAG,SAC/D43D,cAAe,CAACt9D,SAAS0F,SAAS,EAAG,QAAS1F,UAC9Cu9D,eAAgB,CAACv9D,SAAS0F,SAAS,GAAI,QAAS1F,UAChDw9D,aAAc,CAACx9D,SAAS0/B,QAAQ,SAAU1/B,SAAS2/B,MAAM,UACzD89B,aAAc,CACVz9D,SAAS0F,SAAS,EAAG,SAASg6B,QAAQ,SACtC1/B,SAAS0F,SAAS,EAAG,SAASi6B,MAAM,WAG5C+9B,yBAAyB,EACzBC,aAAa,EAAArnB,EAAA7jD,GAAE,kBACfmrE,YAAa,KACbC,aAAc,KACdC,kBAAkB,EAAAxnB,EAAA7jD,GAAE,4BAEpBokD,iBAAkB,WAAY,IACtB19C,EAAG8V,EAAS8uD,EAAeC,EAAiB5kE,EAAMqhB,EAAUzL,EAAW9f,EADjD+F,EAAA9E;AAsB1B,OApBAiJ,EAAOjJ,MACPjB,EAAQiB,KAAKf,IAAI,WAEbqrB,EAAWvrB,EAAM0Q,MAAM,KACvBo+D,EAAkBh+D,OAAOya,EAAS,GAAItqB,KAAKf,IAAI,iBAC/C2uE,EAAgB/9D,OAAOya,EAAS,GAAItqB,KAAKf,IAAI,mBAE7C4uE,EAAkBh+D,OAAO7P,KAAKf,IAAI,SAAUe,KAAKf,IAAI,iBACrD2uE,EAAgB/9D,OAAO7P,KAAKf,IAAI,OAAQe,KAAKf,IAAI,kBAErD4f,EAAYgvD,EAAgBp2D,UAAYo2D,OAAkB,EAC1D/uD,EAAU8uD,EAAcn2D,UAAYm2D,OAAgB,EACpD5kE,EAAI,IAAII,EAAAA,QAAEC,SACNrJ,KAAKf,IAAI,UACTe,KAAKf,IAAI,UAAUgG,MAAK,SAAU+nE,GAC9B,OAAOhkE,EAAEtD,QAAQsnE,MAGrBhkE,EAAEtD,UAECsD,EAAE/D,MAAK,SAAC+nE,GACX,IAAIriE;AAgEJ,OA/DAA,EAAU,CACN6G,OAAQ,CACJg8D,YAAa1oE,EAAK7F,IAAI,eACtBkS,OAAQrM,EAAK7F,IAAI,UACjB0uE,iBAAkB7oE,EAAK7F,IAAI,qBAE/B6uE,iBAAiB,EACjBjvD,UAAWA,EACXC,QAASA,EACT2tD,MAAO3nE,EAAK7F,IAAI,SAChB8uE,UAAWjpE,EAAK7F,IAAI,aACpBotE,WAAYvnE,EAAK7F,IAAI,cACrB4tE,cAAe/nE,EAAK7F,IAAI,iBACxB6tE,WAAYhoE,EAAK7F,IAAI,cACrB8tE,YAAajoE,EAAK7F,IAAI,eACtB0tE,UAAW7nE,EAAK7F,IAAI,aACpB2tE,iBAAkB9nE,EAAK7F,IAAI,oBAC3BytE,MAAO5nE,EAAK7F,IAAI,SAChB+uE,iBAAiB,EACjBC,UAAWnpE,EAAK7F,IAAI,SACpBivE,qBAAqB,GAErBlB,IAAW5jE,EAAAA,QAAE+kE,cAAcnB,KAC3BriE,EAAQqiE,OAASA,IAErB,EAAArmB,EAAAznD,SAAE,yBAA0B4F,EAAKmsC,SAASm9B,gBAAgBzjE,IAC1D,EAAAg8C,EAAAznD,SAAE,yBAA0B4F,EAAKmsC,SAASruB,GACtC,wBACA,SAAUyrD,EAAI7uD,GACV,IAAI+sD;AAKJ,OAJAA,EAAetjE,EAAKhK,IAAI,gBACxB4f,EAAYhP,OAAO5G,EAAKhK,IAAI,SAAUstE,GACtCztD,EAAUjP,OAAO5G,EAAKhK,IAAI,OAAQstE,IAClCxtE,EAAQkK,EAAKhK,IAAI,WAEbqrB,EAAWvrB,EAAM0Q,MAAM,KACvB+P,EAAO8uD,aAAaz+D,OAAOya,EAAS,GAAIiiD,IACjC/sD,EAAO+uD,WAAW1+D,OAAOya,EAAS,GAAIiiD,KACtC1tD,EAAUpH,WAAaqH,EAAQrH,WACtC+H,EAAO8uD,aAAazvD,GACbW,EAAO+uD,WAAWzvD,SAFtB,MAMf,EAAA6nC,EAAAznD,SAAE,yBAA0B4F,EAAKmsC,SAASruB,GACtC,yBACA,SAAUyrD,EAAI7uD,GACV,IAAIiuD,EAAa94D,EAAKP;AAItB,OAHAA,EAAQoL,EAAOX,UAAU1N,OAAOlI,EAAKhK,IAAI,iBACzC0V,EAAM6K,EAAOV,QAAQ3N,OAAOlI,EAAKhK,IAAI,kBACrCwuE,EAAcxkE,EAAKhK,IAAI,iBAEnBM,MAAM8uD,OACF,uDACuB,mBAAhBof,GAEJA,EAAYr5D,EAAOO,KAE1B1L,EAAK29B,cAAc,CAAExyB,MAAAA,EAAOO,IAAAA,IACrB1L,EAAK9G,IAAI,QAASiS,EAAQ,IAAMO,QAI5C,EAAAgyC,EAAAznD,SAAE,yBAA0B4F,EAAKmsC,SAASruB,GAC7C,0BACA,WACI,IAAI8qD;AAEJ,OADAA,EAAezkE,EAAKhK,IAAI,kBAEpBM,MAAM8uD,OACF,wDACwB,mBAAjBqf,GAEJA,MAEPzkE,EAAK9G,IAAI,QAAS8G,EAAKhK,IAAI,UACpBgK,EAAK9G,IAAI,MAAO8G,EAAKhK,IAAI,gBAOpDuvE,YAAa,WACT,GAAIxuE,KAAKf,IAAI,2BACT,OAAO,EAAA0nD,EAAAznD,SAAE,oBAAoB0P;;MCtKb6/D,EAAAA,QAAWrvE,OAAO,CAC1C6qD,WAAY,wBACZzoB,UAAW1qB,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,UAChBivE,GAAI53D,GAAGtX,OAAOC,UACdI,MAAOiX,GAAGtX,OAAOC,UACjB65B,YAAa,WAAY,IAAAx0B,EAAA9E;AACrB,OAAO,IAAIT,MAAMkG,KAAKwC,SAAQ,SAACvC,EAASwC,GACpC,IAAIuY,EAAQi2B;AAKZ,OAJAj2B,EAAS3b,EAAK7F,IAAI,UAElBy3C,EAAOj2B,EAAOxhB,IAAI,QAEXwhB,EAAOomB,OAAO5hC,MAAK,SAAC0R,GACvB,OAAO7R,EAAK7F,IAAI,SACXgtB,WAAW,cAAexL,EAAOxhB,IAAI,yBAA0B,CAC5D8K,QAAQ,IAEX9E,MAAK,WACF,IAAIzB,EAAO2W,EAAQw0D,EAAkBhkE,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,QAE9B0vE,EAAmBluD,EAAOxhB,IAAI,sBAC/B0lB,EAAOzZ,KAAK,oBAAsByjE,GAElCluD,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,MAAM8uD,QACDvpD,EAAK7F,IAAI,uBACV,0DAEG6F,EAAK8pE,OACR9pE,EAAK7F,IAAI,uBACT0lB,EACAlE,EACA/a,EACAwC,aAMxB0mE,OAAQ,SAAU/nE,EAAK8d,EAAQlE,EAAQ/a,EAASwC,GAAQ,IAChD/G,EAAcF,EAAe2nC,EAAaimC,EAAmBC,EADbj4D,EAAA7W;AAmDpD,OAjDAiB,EAAO,GACP0jB,EAAO/d,SAAQ,SAACqP,GACZ,OAAQhV,EAAKgV,EAAKxG,MAAM,KAAK,IAAMwG,EAAKxG,MAAM,KAAK,MAE5B,gBAAvBpO,EAAAA,QAAOC,aACPL,EAAK8tE,SAAW,eAChB9tE,EAAK+tE,UAAY,gBACjB/tE,EAAKguE,OAAS,8BAEdhuE,EAAK8tE,SAAW1tE,EAAAA,QAAO6C,IAAI0D,kBAAoB,IAC/C3G,EAAK+tE,UAAYhvE,KAAKf,IAAI,SAASmC,KAAO,IAC1CH,EAAKguE,OAASjvE,KAAKf,IAAI,MAAMmC,KAAO,KAExCD,EAAenB,KAAKf,IAAI,8CACxBgC,EAAKiuE,MAAQ/tE,EACbF,EAAKkuE,WAAa1uD,EAAOxhB,IAAI,yBAC7B6vE,EAAU,IAEVlmC,EAAc,GACkB,IAA5B5oC,KAAKovE,oBACLxmC,EAAY19B,KAAK,iBAAmBlL,KAAKovE,oBAIzCpvE,KAAKf,IAAI,SAASsC,KAAK,yBACvBqnC,EAAY19B,KAAK,gBAEjBlL,KAAKf,IAAI,SAASsC,KAAK,2BACvBqnC,EAAY19B,KAAK,oBACjB4jE,EAAU,KAKVD,GADsB,IAAtBhoE,EAAI8B,QAAQ,KACQigC,EAAY11B,OAAS,EAAI,IAAM01B,EAAYjrB,KAAK,KAAO,GAEvDirB,EAAY11B,OAAS,EAAI,IAAM01B,EAAYjrB,KAAK,KAAO,GAErE3d,KAAKf,IAAI,QAAQ8F,QACvB/E,KAAKf,IAAI,SAASmC,KAAO,cAAgByF,EAAMgoE,EAC/C,CACIhuE,OAAQ,OACRiuE,QAASA,EACTvuE,QAAS,CACL+I,cAAe,UAAYnI,GAE/BF,KAAMiC,KAAKC,UAAUlC,KAIxBgE,MAAK,SAAC0R,EAAM04D,EAAYC,GACrB,IAAIC,EAAcnqE;AAGlB,OAFAuR,EAAOA,EAAKsL,IACZstD,GAAe,EACF,KAAT54D,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,EAAK2b,MAAM,YAAY3U,KAAK,QAE1C9G,EAAK5X,IAAI,WAAWoD,MAChB,IAAI9C,MAAMua,OAAOiH,SAAS3b,EAAQgK,QAAQ,MAAO,UAErDuH,EAAOA,EAAK2b,MAAM,YAAY3U,KAAK,MACnC4xD,GAAe,GAEZ14D,EAAK5X,IAAI,SACXgtB,WAAWxL,EAAOxhB,IAAI,yBAA0BwhB,EAAOxhB,IAAI,MAAO,CAC/D8K,QAAQ,IAEX9E,MAAK,SAAC0R,GACH,IAAIklB,EAAG2zC,EAAUphD;AAWjB,OAVAA,EAAQzX,EAAK1X,IAAI,sBACjBuwE,EAAWnuE,EAAAA,QAAO6C,IAAI0D,kBAAoB,IAAMwmB,EAAM,GAAGttB,IACrDyuE,KACA1zC,EAAIhc,SAASoU,cAAc,MACzBxrB,KAAO+mE,EACT3zC,EAAEr2B,OAAS,SACXq2B,EAAEwzB,SAAWjhC,EAAM,GAAGvhB,KACtBgT,SAASyrB,KAAKmkC,YAAY5zC,GAC1BA,EAAE9b,SAECra,WAGlBusD,OAAM,SAACnoD,GACJ,OAAI,EAAA4lE,EAAAC,gBAAe7lE,IACf+M,EAAK5X,IAAI,WAAWoD,MAAMwU,EAAK5X,IAAI,QAAQqD,EAAE,yBACtCoD,MAEPmR,EAAK5X,IAAI,SAASupC,OAAO1+B,GAClBpE,SAIvBkqE,YAAa,SAAUnvD,EAAQ6uD,GAC3B,IAAIO,EAAcC,EAAOC;AAIzB,OAHAF,EAAepvD,EAAOxhB,IAAI,eAAemQ,QAAQ,gBAAiB,KAAO,SACzEygE,GAAgB,QAChBC,EAAQR,EAAMU,kBAAkB,yBAGP,cADrBD,EAAYD,EAAMrgE,MAAM,MACV,IAA0C,IAArBsgE,EAAU78D,OAClC68D,EAAU,GAGlBF,GAEXT,iBAAkB,WACd,OAAIpvE,KAAKf,IAAI,aAAa0mC,UAAU,CAAC,2BAC1B,EAEA;;AClOnB,MAA4BpmC,MAAAyc,UAAU5c,OAClC6wE,EAAAA,QACAC,EAAAA,QACA,CACIhjE,MAAO3N,MAAAC,OAAAC,UACP85B,UAAWh6B,MAAAC,OAAAC,UACX+hC,UAAWjiC,MAAAC,OAAAC,QAAQ,qBACnBkC,MAAOpC,MAAAC,OAAAC,UACP2oC,YAAa7oC,MAAAC,OAAAC,UACbE,KAAMJ,MAAAC,OAAAC,UACN01B,QAAS,KACToB,MAAO,aACP8jC,cAAe96D,MAAAktB,EAAE,CACb6tC,QAAQ,EACRiH,SAAS,EACTx+D,OAAO,EACP6uD,MAAM,IAGVue,YAAa5wE,MAAAwB,SAAS,SAAS,WAC3B,OAAOxB,MAAAN,IAAIe,KAAM,kCAGrBqqD,QAAS9qD,MAAAwB,SAAS,SAAS,WACvB,MACiD,OAA7CxB,MAAAN,IAAIe,KAAM,gCACmC,QAA7CT,MAAAN,IAAIe,KAAM,+BAEH,CACH,CACIowE,OAAQ,kBACR3uB,YAAaliD,MAAAN,IAAIe,KAAM,QAAQsC,EAAE,mBAErC,CACI8tE,OAAQ,4BACR3uB,YAAaliD,MAAAN,IAAIe,KAAM,QAAQsC,EAAE,kCAIlC,CAAC,CAAE8tE,OAAQ,MAAO3uB,YAAaliD,MAAAN,IAAIe,KAAM,QAAQsC,EAAE,uBAGlEi4C,QAAS,CACC61B,OADD,SACQ1lE,GAAM,MAAA5F,EAAA9E;AAAA,SAAA6X,mBAAAC,MAAA,SAAAC,IAAA,IAAAxU,EAAA8sE,EAAAC;AAAA,OAAAz4D,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,GACfhZ,MAAAN,IAAI6F,EAAM,aAAa40B,WAAW,CAAED,SAAU,mBAAoBE,OAAQjvB,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,EAAKsjC,YAAYC,cACnB9kC,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,MAAM6mC,OAAXnwB,EAAA2B;AAZO,KAAA,GAAA,OAAA3B,EAAAC,KAAA,GAcP/Y,MAAA4C,IAAI2C,EAAM,cAAc,GAdjBuT,EAAAowB,OAAA;AAAA,KAAA,GAAApwB,EAAAE,KAAA;AAAA;AAAA,KAAA,GAAA,GAgBK,oBAAT7N,EAhBI,CAAA2N,EAAAE,KAAA;AAAA,MAAA,OAiBXzT,EAAKyrE,qBAAqBhxE,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,OAqBL+3D,EAAY,CAAC/wE,MAAAN,IAAI6F,EAAM,UAEzBurE,EAD6C,OAA7C9wE,MAAAN,IAAI6F,EAAM,+BACIA,EAAK08B,UAAUrnB,OAAO,MAEtBrV,EAAK08B,UAAUrnB,OAAO,OAzB7B9B,EAAAG,OAAA,SA2BJ1T,EAAK0rE,qBAAqBH,EAAaC,GAAWrrE,MAAK,WAAA,OAC1DH,EAAK2rE;AA5BE,KAAA,GAAA,IAAA,MAAA,OAAAp4D,EAAAe,UAAArB,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA;;2FAiCnB24D,aAlCK,SAkCQltE,GAAO,IAAA20B;AAChB,QAAO,QAAAA,EAAC30B,EAAM6K,gBAAP,IAAA8pB,GAACA,EAAgB2N,eAGhC2qC,gBA7EJ,WA8EQ,OAAOlxE,MAAA4C,IAAInC,KAAM,cAAc;;MCjFdT,MAAMyc,UAAU5c,OAAO,CAChD8N,MAAO3N,MAAMC,OAAOC,UACpBE,KAAMJ,MAAMC,OAAOC,UACnBkxE,OAAO,EACPC,OAAQ,EACR5gC,OAAQ,QACRnuC,KAAMgO,SAAS0/B,QAAQ,SAASp+B,OAAO,cACvC0/D,eAAgBtxE,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,sCAIrCwuE,eAAgBvxE,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,IACZgoE,EAAQj8D,EAAK9S,EAAMgR,EAAGm9B,EAAQ+gC,EAAU1pD,EAASpb,EAAKiB,EAD1CpI,EAAA9E;AAShB,IAPAA,KAAKmC,IAAI,UAAU,GACnBnC,KAAKmC,IAAI,YAAY,GACrB+K,EAAQlN,KAAKf,IAAI,SACjB2xE,EAAS5wE,KAAKf,IAAI,UAClB+wC,EAAShwC,KAAKf,IAAI,UAClB4C,EAAO7B,KAAKf,IAAI,QAChBooB,EAAU,GACLxU,EAAI,EAAG5G,EAAM2kE,EAAQ,GAAK3kE,EAAM4G,GAAK5G,EAAM4G,GAAK5G,EAAK,GAAKA,EAAM4G,IAAMA,IACvE8B,EAAO,WACH,OAAQq7B,GACJ,IAAK,QACD,OAAOngC,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,CAC9BkoD,YAAanhE,OAAOhO,GAAMsP,OAAO,KAAO,MAAQtB,OAAO8E,GAAKxD,OAAO,KACnE8+B,kBAAmBpuC,EACnBquC,gBAAiBv7B,KAGzB9S,EAAQ,WACJ,OAAQmuC,GACJ,IAAK,QACD,OAAOngC,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,OADA4/D,EAAW1pD,EAAQ4pD,OAAO,QACnB1xE,MAAMkG,KAAKwC,QAAQ0iC,IAAIomC,GAAU9rE,MAAK,WAKzC,OAJIH,EAAK7F,IAAI,gBACT6F,EAAKosE,YAAYpsE,EAAK7F,IAAI,aAE9B6F,EAAK3C,IAAI,UAAU,GACZ2C,EAAK3C,IAAI,YAAY,OAGpCgvE,SAAU,SAAUR,GAChB,OAAO3wE,KAAKmC,IAAI,QAASwuE,IAE7BO,YAAa,WACT,GAAIlxE,KAAKf,IAAI,eACT,OAAOe,KAAKkxE,YAAYlxE,KAAKf,IAAI,cAGzCmyE,YAAa,SAAUpgC,EAAUvwB,GAC7B,GAAIzgB,KAAKf,IAAI,eACT,OAAOe,KAAKkxE,YAAYlgC,EAAUvwB;;o8BC1HlD/hB,OAAA,+BAAA,CAAA,UAAA,iDAAA,SAAAC,EAAA0yE,GAGAxyE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAoyE,EAAAnyE;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,CACL5Z,OAAQ,WACJ,IAAI/Z,EAAqB0qD,EAAeC;AAWxC,OATAD,GADa,EAAA3qB,EAAAznD,SAAE,SAAUc,KAAKixC,SAAS,GACZqgC,cACvBtxE,KAAKf,IAAI,WACTqyE,IAEA,MAAO1qD,IAEPA,EAAU5mB,KAAKf,IAAI,aAEvBsyE,EAAgB3qD,EAAQ4qD,SAASF,IAGtBtxE,KAAKf,IAAI,YACZsyE,EAAc9wD,OACPzgB,KAAKmC,IAAI,QAASovE,EAAc9wD,QAEhCzgB,KAAKmC,IAAI,QAASovE,GAGtBvxE,KAAKmC,IAAI,QAASovE,EAActyE,IAAI,OARpCe,KAAKmC,IAAI,QAAS;;MC7C1BsvE,EAAAA;;MCUKlyE,MAAMyc,UAAU5c,OAAO4oE,EAAAA,QAAM,CAC7CpoE,QAASL,MAAMC,OAAOC,UACtBE,KAAMJ,MAAMC,OAAOC,UACnB6vD,IAAK/vD,MAAMC,OAAOC,UAClB+hC,UAAW1qB,GAAGtX,OAAOC,QAAQ,qBAC7BiyE,UAAWnyE,MAAMC,OAAOC,UACxBwqD,WAAY,YACZqb,UAAU,EACVvlE,KAAM,WAAY,IAAA+E,EAAA9E;AAEd,OADAA,KAAKC,OAALC,MAAAF,KAAeG,WACQ,oBAAZyxC,SAAuC,OAAZA,QAC3BA,QAAQ+/B,cAAcC,mBAAmB3sE,MAAK,SAAC4sE,GAClD,OAAO/sE,EAAK3C,IACR,UACA2C,EAAK7F,IAAI,QAAQqD,EAAE,uBACf,KACAwC,EAAK7F,IAAI,OAAO4yE,UAChB,SACAA,MAIL7xE,KAAKmC,IACR,UACAnC,KAAKf,IAAI,QAAQqD,EAAE,uBAAyB,KAAOtC,KAAKf,IAAI,OAAO4yE,YAI/EC,WAAYvyE,MAAMwB,SAAS,uBAAuB,WAC9C,OAAOf,KAAKf,IAAI,8BAEpBs7C,QAAS,CACLxgB,MAAO,SAAUiuC,GAIb,GAHIhoE,KAAKf,IAAI,UACTe,KAAK+5B,QAELiuC,GAAQhoE,KAAKf,IAAI,cACjB,OAAOe,KAAK+xE,WAAW/J,EAAKtmC,OAGpC4jC,SAAU,WACN,OAAOtlE,KAAKq0D,eAAe,aAE/BmR,qBAAsB,SAAUvvD,GAC5B,OAAOA,EAAKo+C,eAAe,kBAE/BoR,cAAe,WAEX,OADAzlE,KAAKgyE,oBAAoBhyE,KAAKf,IAAI,UAC3Be,KAAK04B,KAAK,UAErB6sC,kBAAmB,WAEf,UADOv+D,aAAa,8BAChBhH,KAAKf,IAAI,UACT,OAAOe,KAAKiyE,UAGpBC,SAAU,SAAUpxE,GAChB,OAAOwF,OAAOmzC,KAAK34C,EAAK,WAE5BqxE,kBAAmB,WAEf,OADAnyE,KAAK04B,KAAK,SACH14B,KAAKmC,IAAI,qBAAqB,IAEzCmpE,WAAY,WACR,OAAOtrE,KAAKmC,IAAI,qBAAqB;;MC1ElCiwE,EAAAA;;MCAAC,EAAAA;;MCAAC,EAAAA;;MCMO/yE,MAAMyc,UAAU5c,OAAO,CACzCs3D,WAAY,CAAC,UACbe,QAAS,cACT8a,eAAe,EACfC,eAAgB,KAChBC,YAAalzE,MAAMwB,SAAS,gBAAiB,YAAY,WACrD,QAAIf,KAAKf,IAAI,eAEFe,KAAKf,IAAI,oBAKxBs7C,QAAS,CACLm4B,YAAa,WACJ1yE,KAAKf,IAAI,mBACVe,KAAKmC,IAAI,iBAAiB,GACtBnC,KAAKf,IAAI,WACTe,KAAK25B;;ACzBzB,IAAMxd,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,GACnB+uB,WAAY,YACZ3X,aAAc,YACd4X,UAAW,KACXC,WAAW,EAEXC,GAAIvzE,MAAAukD,SAAS,mBAAmB,WAC5B,OAAO9jD,KAAKmC,IAAI,YAAanC,KAAKf,IAAI,uBAG1C8zE,OAAQj8D,GAAG/V,SAAS,eAAe,WAC/B,IAAIE;AAEJ,OAAY,OADZA,EAAOjB,KAAKf,IAAI,YAIXM,MAAMuD,QAAQ7B,IAGI,IAAhBA,EAAKiS,UAGhB8/D,mBAAoBl8D,GAAG/V,SAAS,WAAW,WACvC,IAAI0jC,EAAS9kC,EAAM2kD,EAAoBV;AAEvC,OADAA,EAAoB5jD,KAAKf,IAAI,uBAEzBwlC,EAAUzkC,KAAKf,IAAI,WACnBU,EAAOK,KAAKf,IAAI,QAChBqlD,EAAqB,GACrBl7C,EAAAA,QAAEe,KAAKs6B,GAAS,SAAC59B,EAAKoP,GAClB,OAAOquC,EAAmBp5C,KAAKvL,EAAK2C,EAAEshD,EAAoB,IAAM3tC,OAE7DquC,GAEJtkD,KAAKf,IAAI,yBAEpBg0E,cAAen8D,GAAG/V,SAAS,cAAc,WACrC,IAAImyE;AASJ,OARAA,EAAkBlzE,KAAKf,IAAI,cAAcklB,QAAO,SAACyuD,GAC7C,OAAQ,CAAC,SAAU,OAAQ,UAAU/tE,MAAK,SAACsuE,GACvC,OAAOP,EAAUj5C,OAAO73B,SAASqxE,UAGzBjoE,KAAK,CACjBo0D,KAAM,mBAEH4T,KAEXE,mBAAoBt8D,GAAG/V,SAAS,cAAc,WAO1C,OALkBf,KAAKf,IAAI,cAAcklB,QAAO,SAACyuD,GAC7C,OAAQ,CAAC,SAAU,OAAQ,UAAU/tE,MAAK,SAACsuE,GACvC,OAAOP,EAAUj5C,OAAO73B,SAASqxE,YAM7C5tC,MAAO,KACPxjB,QAASjL,GAAG/V,SAAS,2BAA2B,WAC5C,IAAIsyE;AAeJ,OAdAA,EAAM,GACFrzE,KAAKf,IAAI,SACTe,KAAKf,IAAI,QAAQ2H,SAAQ,SAACoO,GACtB,GAAyB,YAArBA,EAAIgmD,aACJ,OAAOqY,EAAI3kD,WAAW1Z,MAIf,IAAfq+D,EAAIngE,QAAgBmgE,EAAIngE,SAAWlT,KAAKf,IAAI,gBAC5Ce,KAAKmC,IAAI,aAAc,aAEvBkxE,EAAIngE,SAAWlT,KAAKf,IAAI,gBACxBe,KAAKmC,IAAI,aAAc,WAEpBkxE,KAEXC,oBAAqBx8D,GAAG/V,UAAS,WAC7B,IAAIuO;AAKJ,OAJAA,EAAM,IACFqqB,OAAS,WACbrqB,EAAIikE,UAAY,cAChBjkE,EAAIwS,KAAO9hB,KAAKf,IAAI,QAAQqD,EAAE,uBACvBgN,KAEXkkE,wBAAyBj0E,MAAMwB,SAAS,kBAAmB,eAAe,WAEtE,QAAKf,KAAKf,IAAI,qBAGoE,IAA7De,KAAKf,IAAI,eAAeqzB,MAAM,MAAM3pB,QAAQ,eAGrE8qE,0BAA2B,WAC3Bj8B,gBAAiB1gC,GAAG/V,UAAS,WACzB,IAAIyC;AAEJ,UADAA,EAAQhC,EAAAA,QAAU6N,cAAcrP,KAAKf,IAAI,QAAU,aAE1CuE,EAAM6K,SAASkpC,aAM5BpR,YAAarvB,GAAG/V,SAAS,QAAQ,WAC7B,IAAIgjD,EAAGvgD,EAAOyiC,EAActmC,EAAMqL;AAClC,OAAKhL,KAAKf,IAAI,SAGd8kD,EAAI/jD,KAAKf,IAAI,aACbU,EAAOK,KAAKf,IAAI,QAChBuE,EAAQugD,EAAEvgD,MAAMxD,KAAKf,IAAI,QAAS,UAE9BgnC,EADAziC,EAAM6K,SAAS63B,aACA1iC,EAAM6K,SAAS63B,aAAaz2B,MAAM,KAElCjM,EAAMmH,QAEd,WACP,IAAIkI,EAAGE,EAAKqqC;AAEZ,IADAA,EAAU,GACLvqC,EAAI,EAAGE,EAAMkzB,EAAa/yB,OAAQL,EAAIE,EAAKF,IAC5C7H,EAASi7B,EAAapzB,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,8BAKzBy0E,WAAYn0E,MAAMwB,SAAS,WAAW,WAAY,IAAA8V,EAAA7W;AAC9C,OAAOA,KAAKf,IAAI,WAAW4iB,KAAI,SAAC5L,GAC5B,OAAOY,EAAK88D,UAAU19D,SAG9B09D,UAAW,SAAU9tC,GACjB,IAAI+tC,EADqBC,EAAAx0B,EAEFr/C,KAAK8zE,YAAYjuC,GAFf;AAGzB,OAHyBguC,EAAA,KAEfD,EAFeC,EAAA,IAGKD,EAAU,GAAK,KAEjDE,YAAa,SAAUjuC,GACnB,IAAI+tC,EAAW1tD;AACf,IAA6B,IAAzB2f,EAAOl9B,QAAQ,KAAa,CAAA,IAAAorE,EAAA10B,EACLxZ,EAAOp2B,MAAM,KADR;AAC3ByW,EAD2B6tD,EAAA,GAE5BH,EAAY,CADFA,EADkBG,EAAA,SAI5B7tD,EAAU2f,EACV+tC,EAAY;AAEhB,MAAO,CAAC1tD,EAAS0tD,IAErBI,QAASl9D,GAAG/V,UAAS,WACjB,OAAOf,KAAKf,IAAI,aAAa0mC,UAAU,CAAC,mBAE5CsuC,aAAc10E,MAAMwB,SAAS,qBAAqB,WAC9C,GAAIf,KAAKf,IAAI,aAAa0mC,UAAU,CAAC,sBACjC,OAAO,KAGfvC,aAAc7jC,MAAMwB,SAAS,cAAc,WACvC,OAAOf,KAAKf,IAAI,WAAWqzB,MAAM,MAAM3U,KAAK,QAEhDu2D,cAAe,SAAU/7D,GACrB,IAAI4rC,EAAG5/B,EAAQm7B,EAAYxsB,EAAajgB,EAAGE,EAAKohE,EAAkBloE,EAAKlN;AAIvE,IAHAglD,EAAI/jD,KAAKf,IAAI,aACbk1E,EAAmB,GAEdthE,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,UACpC6zB,EAAc/zB,EACdugD,EAAat/C,KAAKf,IAAI,QAAQqD,EAAE,yBAEhCwwB,EAAcixB,EAAE3R,SACZrzC,EACAolB,EAAOllB,IAAI,QACXklB,EAAOllB,IAAI,SACX,MACAkZ,GAEJmnC,EAAat/C,KAAKf,IAAI,QAAQqD,EAAE6hB,EAAOllB,IAAI,QAAU,IAAMklB,EAAOllB,IAAI,UAEtEe,KAAKf,IAAI,mBACTk1E,EAAiBjpE,KAAK,CAClB,CACI4W,KAAMw9B,EAAa,KAAOxsB,EAC1BhW,MAAO,gBAIfq3D,EAAiBjpE,KAAK,CAACo0C,EAAa,IAAKxsB,IAIrD,OAAOqhD,GAEX55B,QAAS,CACL65B,iBAAkB,SAAUvtE,GACxB,IAAIk9C,EAAGz0C;AAYP,OAXAy0C,EAAI/jD,KAAKf,IAAI,aAETqQ,EAD6B,qBAA7BtP,KAAKf,IAAI,WAAW4H,GACd,CACFtD,KAAMvD,KAAKf,IAAI,QACfyL,KAAM,WACN2D,SAAU,GACV26B,IAAK,oBAGH+a,EAAEvgD,MAAMxD,KAAKf,IAAI,QAASe,KAAKf,IAAI,WAAW4H,IAEjD7G,KAAK+kD,WAAW,gBAAiB,qBAAsBz1C,IAElE+kE,cAAe,SAAUxtE,GACrB,OAAI7G,KAAKf,IAAI,aACFe,KAAK04B,KAAK,mBAAoB7xB,GAE9B7G,KAAK04B,KAAK,cAAe7xB,IAGxCytE,YAAa,SAAUztE,GACnB,IAAI49B,EAAS8vC;AASb,OARA9vC,EAAUzkC,KAAKf,IAAI,WAGfs1E,GAFJA,EAAev0E,KAAKf,IAAI,YACH4H,GAAwB,OAAjB0tE,EACT1tE,EAAM,IAENA,EAEnB7G,KAAKmC,IAAI,QAASoyE,GACXv0E,KAAK+kD,WAAW,gBAAiB,gBAAiBtgB,EAAQ59B,KAErEqtD,MAAO,SAAUl/C,GACb,IAAI2P;AAgBJ,MAfuC,YAAnCplB,MAAMN,IAAI+V,EAAK,iBACfzV,MAAM4C,IAAI6S,EAAK,eAAgB,aAC/B2P,EAAS,CACLhhB,GAAIpE,MAAMN,IAAI+V,EAAK,MACnB2kB,OAAQ,UAEZ35B,KAAK+kD,WAAW,gBAAiB,WAAYpgC,KAE7CplB,MAAM4C,IAAI6S,EAAK,eAAgB,WAC/B2P,EAAS,CACLhhB,GAAIpE,MAAMN,IAAI+V,EAAK,MACnB2kB,OAAQ,OAEZ35B,KAAK+kD,WAAW,gBAAiB,WAAYpgC,IAE1C3kB,KAAK+kD,WAAW,gBAAiB,cAAe/kD,KAAKf,IAAI,aAEpEu1E,SAAU,WAAY,IAAA/wD,EAAAzjB;AAsBlB,OArBAA,KAAKq0D,eAAe,YACpBr0D,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,MACnB2kB,OAAQ,OAELlW,EAAKshC,WAAW,gBAAiB,WAAYpgC,KAEpDplB,MAAM4C,IAAI6S,EAAK,eAAgB,aAC/ByO,EAAKthB,IAAI,aAAc,aACvBwiB,EAAS,CACLhhB,GAAIpE,MAAMN,IAAI+V,EAAK,MACnB2kB,OAAQ,UAELlW,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,IAE5DiuD,UAAW,SAAUj5C,EAAQ3kB,GACzB,IAAI8B,GAAG29D,OAAO96C,GAGd,OAAO35B,KAAK+kD,WAAW,gBAAiBprB,EAAQ3kB,IAEpD0/D,qBAAsB,SAAU/6C,GAC5B,OAAO35B,KAAK+kD,WAAW,gBAAiB,oBAAqB,CACzDprB,OAAQA,EACRxhB,KAAMnY,KAAKf,IAAI,cAGvB01E,WAAY,SAAUC,GAClB,OAAO50E,KAAK+kD,WAAW,gBAAiB6vB,IAE5CzvB,WAAY,WAAY,IAAA3oB,EAAAx8B;AACpB,OAAOA,KAAKf,IAAI,gBAAgBgG,MAAK,SAACgsC,GAClC,IAAIC,EAAUijC;AAad,OAZAjjC,EAAW,CAACD,GACRzU,EAAKv9B,IAAI,aACTk1E,EAAmB33C,EAAK03C,cAAc13C,EAAKv9B,IAAI,UAC1BiU,OAAS,GAC1Bg+B,EAAS9pB,QAAQ,CACboqB,MAAO,CACHlG,KAAM6oC,GAEV1iC,OAAQ,cAIbjV,EAAKmV,sBAAsBT,GAAUjsC,MAAK,SAAC8nB,GAC9C,GAAuB,oBAAZ6kB,SAAuC,OAAZA,QAClC,OAAOpV,EAAKv9B,IAAI,WAAW4yC,SAAS9kB,EAAM,0BAK1D8nD,SAAU,SAAUptC,EAAKzyB,GACrB,IAAI2P;AAGJ,OADAA,EAAS,CAAE8iB,IAAAA,EAAKtvB,KADTnD,EAAM,CAACA,GAAOhV,KAAKf,IAAI,YAEvBe,KAAK+kD,WAAW,gBAAiB,WAAYpgC;eChXhEjmB,OAAA,2BAAA,CAAA,UAAA,yCAAA,SAAAC,EAAAm2E,GAGAj2E,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA61E,EAAA51E;MCDaK,MAAMyc,UAAU5c,OAAO,CAChC21E,MAAO,KACPlhD,YAAat0B,MAAMwB,SAAS,WAAY,OAAQ,kBAAkB,WAC9D,IAAIi0E,EAAgBtb,EAAOrmD,EAAO0qC,EAAMxlC,EAAM08D,EAAUxqE,EAAMyqE,EAAQH;AAEtE,GADAA,EAAQ/0E,KAAKf,IAAI,SACjB,CAYA,IATA+1E,EAAiBh1E,KAAKf,IAAI,qBAEtB81E,EAAQA,EAAM5wD,QAAO,SAAUuyB,GAC3B,OAAOA,EAAKz3C,IAAI,iBAAmB+1E,MAG3CE,EAASl1E,KAAKf,IAAI,QAClB8+C,EAAOtzC,EAAO8N,EAAO08D,EAAW,KAChC5hE,GAAQ,GACH6hE,EAAQ,CAET,KADAxb,EAAQqb,EAAM91E,IAAI,gBAEd;AAEJi2E,EAASxb,EAAMz6D,IAAI,MAuBvB,OArBA81E,EAAMnuE,SAAQ,SAAU8vC,GASpB,OARIrjC,IAAUkF,IACVA,EAAOm+B,GAEPA,EAAKz3C,IAAI,QAAUi2E,IACnB7hE,GAAQ,EACR5I,EAAOisC,EACPu+B,EAAWl3B,GAEPA,EAAOrH,KAKnBn3C,MAAMkD,IAAI8V,KAAKvY,MAAM,WACjB,IAAIA,KAAKf,IAAI,eAIb,OADAe,KAAKmC,IAAI,WAAYoW,GACdvY,KAAKmC,IAAI,eAAgB8yE,MAE7BxqE,MAEX0qE,SAAU,KACVC,aAAc,KACd76B,QAAS,CACL86B,aAAc,WAEV,OAAOr1E,KAAKmC,IAAI,OAAQnC,KAAKf,IAAI,iBAErCq2E,iBAAkB,WAEd,OAAOt1E,KAAKmC,IAAI,OAAQnC,KAAKf,IAAI;eChE7CP,OAAA,qCAAA,CAAA,UAAA,4EAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D;MCDsBK,MAAMyc,UAAU5c,OAAO,CACzCO,KAAMmX,GAAGtX,OAAOC,UAChB6vD,IAAKx4C,GAAGtX,OAAOC,UACfinD,iBAAkB,WAEd,OADA1mD,KAAKC,SACED,KAAKf,IAAI,OAAOs2E,sBAAsB,OAEjD9mB,mBAAoB,WAEhB,OADAzuD,KAAKC,SACED,KAAKf,IAAI,OAAOu2E,4BAE3Bj7B,QAAS,CACLx6B,MAAO,SAAU/K,GACb,GAAIhV,KAAKf,IAAI,cACT,OAAOe,KAAKy1E,WAAWzgE;eCtBvCtW,OAAA,gCAAA,CAAA,UAAA,qDAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D,cCTAR,OAAA,iCAAA,CAAA,UAAA,sDAAA,SAAAC,EAAAm6D,GAGAj6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA65D,EAAA55D;ACLA,IAAMmC,EAASq0E,EAAAA,QAAI,iBAAmB,KAEvBC,EAAAA,QAAQv2E,OAAO,CAE5BmiB,MAAOlgB,EAAOu0E,cAAgB,UAC9BC,gBAAiBx0E,EAAOw0E,iBAAmB,WAC3CC,eAAgBz0E,EAAOy0E,gBAAkB,SACzCx0D,WAAYjgB,EAAO00E,oBAAqB,EACxCv0D,KAAMngB,EAAO20E,aAAe;;MCgiEf,CACXC,YAliEU,CACV,CACIC,MAAO,CAAC,4CACRx0C,KAAM,CAAC,aACP49B,KAAM,sBACNx9C,KAAM,iBACNne,GAAI,YACJ+6C,SAAU,IAEd,CACIw3B,MAAO,CAAC,4CACRx0C,KAAM,CAAC,YACP49B,KAAM,oBACNx9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,IAEd,CACIw3B,MAAO,CAAC,WAAY,0BAA2B,mBAC/Cx0C,KAAM,CAAC,6BACP49B,KAAM,iBACNx9C,KAAM,iBACNne,GAAI,WACJwyE,WAAY,CAAC,OAAQ,WACrBz3B,SAAU,CACN,CACI58B,KAAM,qBACN4f,KAAM,6BAEV,CACI5f,KAAM,qBACN4f,KAAM,wBACNw0C,MAAO,CAAC,4BAA6B,gBAEzC,CACIp0D,KAAM,gBACN4f,KAAM,uBACNw0C,MAAO,CAAC,8BAEZ,CACIp0D,KAAM,4BACN4f,KAAM,uBACNw0C,MAAO,CAAC,iBAEZ,CACIp0D,KAAM,+BACN4f,KAAM,0BACNw0C,MAAO,CAAC,gBAAiB,YAE7B,CACIp0D,KAAM,+BACN4f,KAAM,0BACNw0C,MAAO,CAAC,eAEZ,CACIp0D,KAAM,qBACN4f,KAAM,mBACNw0C,MAAO,CAAC,0BAEZ,CACIp0D,KAAM,qBACN4f,KAAM,sBACNw0C,MAAO,CAAC,sBAAuB,2BAEnC,CACIp0D,KAAM,0BACN4f,KAAM,kBACNw0C,MAAO,CACH,gBACA,0CACA,sBAGR,CAEIp0D,KAAM,yBACN4f,KAAM,wBAEV,CACI5f,KAAM,8BACN4f,KAAM,yBACNw0C,MAAO,CAAC,gBAAiB,WAAY,UAAW,eAChDE,UAAW,CAAC,gCAEhB,CACIt0D,KAAM,mCACN4f,KAAM,8BACNw0C,MAAO,CAAC,gBAAiB,WAAY,2BAA4B,kBAI7E,CACIA,MAAO,CAAC,YAAa,qBAAsB,gBAC3Cx0C,KAAM,CAAC,cACP49B,KAAM,oBACNx9C,KAAM,kBACNne,GAAI,cAER,CACIuyE,MAAO,CACH,2CACA,uBACA,8BAEJx0C,KAAM,CAAC,oBACP49B,KAAM,gBACNx9C,KAAM,cACNne,GAAI,SACJ+6C,SAAU,CACN,CACI58B,KAAM,iBACN4f,KAAM,oBAEV,CACI5f,KAAM,6BACN4f,KAAM,uBACNw0C,MAAO,CAAC,sBAEZ,CACIp0D,KAAM,wBACN4f,KAAM,4BACNw0C,MAAO,CAAC,sBAEZ,CACIp0D,KAAM,sBACN4f,KAAM,oBAIlB,CACIw0C,MAAO,CACH,2CACA,cACA,+BAEJx0C,KAAM,CAAC,oBACP49B,KAAM,gBACNx9C,KAAM,cACNne,GAAI,SACJ+6C,SAAU,CACN,CACI58B,KAAM,iBACN4f,KAAM,oBAEV,CACI5f,KAAM,6BACN4f,KAAM,uBACNw0C,MAAO,CAAC,sBAEZ,CACIp0D,KAAM,wBACN4f,KAAM,4BACNw0C,MAAO,CAAC,sBAEZ,CACIp0D,KAAM,sBACN4f,KAAM,oBAIlB,CACIw0C,MAAO,CAAC,mBACRx0C,KAAM,CAAC,iBACP49B,KAAM,6BACNx9C,KAAM,qBACNne,GAAI,gBACJ+6C,SAAU,CACN,CACI58B,KAAM,qBACN4f,KAAM,uBAEV,CACI5f,KAAM,4BACN4f,KAAM,wBAEV,CACI5f,KAAM,6CACN4f,KAAM,wCACNw0C,MAAO,CAAC,gCAEZ,CACIp0D,KAAM,qCACN4f,KAAM,gCACNw0C,MAAO,CAAC,4BAEZ,CACIp0D,KAAM,0CACN4f,KAAM,qCACNw0C,MAAO,CAAC,2BAEZ,CACIp0D,KAAM,8BACN4f,KAAM,yBACNw0C,MAAO,CAAC,oBAEZ,CACIp0D,KAAM,sCACN4f,KAAM,sBACNw0C,MAAO,CAAC,yBAEZ,CACIp0D,KAAM,gCACN4f,KAAM,2BACNw0C,MAAO,CAAC,wBAIpB,CACIA,MAAO,CAAC,mCACRx0C,KAAM,CAAC,SACP49B,KAAM,6BACNx9C,KAAM,aACNne,GAAI,QACJ+6C,SAAU,CACN,CACI58B,KAAM,aACN4f,KAAM,cACNw0C,MAAO,CAAC,iBAEZ,CACIp0D,KAAM,mBACN4f,KAAM,eACNw0C,MAAO,CAAC,sBAEZ,CACIp0D,KAAM,qBACN4f,KAAM,iBACNw0C,MAAO,CAAC,iBAEZ,CACIp0D,KAAM,kBACN4f,KAAM,cACNw0C,MAAO,CAAC,eAAgB,sBAIpC,CACIA,MAAO,CACH,6BACA,2DAEJx0C,KAAM,CAAC,2BACP49B,KAAM,6BACNx9C,KAAM,yBACNne,GAAI,oBACJ+6C,SAAU,CACN,CACI58B,KAAM,iCACN4f,KAAM,0BACNw0C,MAAO,CAAC,mCAEZ,CACIp0D,KAAM,qCACN4f,KAAM,yBACNw0C,MAAO,CAAC,8BAIpB,CACIA,MAAO,CACH,0BACA,2DAEJx0C,KAAM,CAAC,wBACP49B,KAAM,qBACNx9C,KAAM,sBACNne,GAAI,iBACJ+6C,SAAU,CACN,CACI58B,KAAM,8BACN4f,KAAM,uBACNw0C,MAAO,CAAC,mCAEZ,CACIp0D,KAAM,kCACN4f,KAAM,sBACNw0C,MAAO,CAAC,8BAIpB,CACIA,MAAO,CAAC,WAAY,6BACpBx0C,KAAM,CAAC,aACP49B,KAAM,mBACNx9C,KAAM,iBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,mBACN4f,KAAM,mBAEV,CACI5f,KAAM,gBACN4f,KAAM,qBACNw0C,MAAO,CAAC,kBAEZ,CACIp0D,KAAM,cACN4f,KAAM,oBAEV,CACI5f,KAAM,gBACN4f,KAAM,0BACNw0C,MAAO,CAAC,kBAEZ,CACIp0D,KAAM,uBACN4f,KAAM,qBACNw0C,MAAO,CAAC,4CAEZ,CACIp0D,KAAM,0BACN4f,KAAM,gBACNw0C,MAAO,CACH,gBACA,0CACA,wBAKhB,CACIA,MAAO,CAAC,2BAA4B,WAAY,2BAChDx0C,KAAM,CAAC,YACP49B,KAAM,gBACNx9C,KAAM,gBACNne,GAAI,UACJ+6C,SAAU,CACN,CACI58B,KAAM,gBACN4f,KAAM,kBAEV,CACI5f,KAAM,qBACN4f,KAAM,kBAEV,CACI5f,KAAM,gBACN4f,KAAM,oBACNw0C,MAAO,CAAC,OAAQ,mCAEpB,CACIp0D,KAAM,mBACN4f,KAAM,uBACNw0C,MAAO,CAAC,sBAAuB,yBAI3C,CAEIA,MAAO,CAAC,mBACRx0C,KAAM,CAAC,wBACP49B,KAAM,qBACNx9C,KAAM,oBACNne,GAAI,cACJ+6C,SAAU,CACN,CACI58B,KAAM,sBACN4f,KAAM,wBAEV,CACI5f,KAAM,6BACN4f,KAAM,uBAEV,CACI5f,KAAM,sCACN4f,KAAM,gCAEV,CACI5f,KAAM,iCACN4f,KAAM,0BACNw0C,MAAO,CAAC,WAAY,iBAExB,CACIp0D,KAAM,mCACN4f,KAAM,4BACNw0C,MAAO,CAAC,+BAAgC,mBAIpD,CACIA,MAAO,CAAC,KAAM,eAAgB,QAC9Bx0C,KAAM,CAAC,gCACP49B,KAAM,mBACNx9C,KAAM,mBACNne,GAAI,cACJ+6C,SAAU,CACN,CACI58B,KAAM,YACN4f,KAAM,+BACNw0C,MAAO,CAAC,WAEZ,CACIp0D,KAAM,UACN4f,KAAM,6BACNw0C,MAAO,CAAC,WAEZ,CACIp0D,KAAM,aACN4f,KAAM,iCAEV,CACI5f,KAAM,+BACN4f,KAAM,iCACNw0C,MAAO,CAAC,4BAEZ,CACIp0D,KAAM,yBACN4f,KAAM,2BACNw0C,MAAO,CACH,0BACA,iCACA,+BAKhB,CACIA,MAAO,CAAC,MAAO,eAAgB,OAC/Bx0C,KAAM,CAAC,iCACP49B,KAAM,qBACNx9C,KAAM,mBACNne,GAAI,cACJ+6C,SAAU,CACN,CACI58B,KAAM,aACN4f,KAAM,gCACNw0C,MAAO,CAAC,YAEZ,CACIp0D,KAAM,WACN4f,KAAM,8BACNw0C,MAAO,CAAC,YAEZ,CACIp0D,KAAM,cACN4f,KAAM,kCAEV,CACI5f,KAAM,+BACN4f,KAAM,iCACNw0C,MAAO,CAAC,4BAEZ,CACIp0D,KAAM,yBACN4f,KAAM,2BACNw0C,MAAO,CACH,0BACA,iCACA,+BAKhB,CACIA,MAAO,CAAC,MAAO,eAAgB,MAC/Bx0C,KAAM,CAAC,gCACP49B,KAAM,qBACNx9C,KAAM,mBACNne,GAAI,cACJ+6C,SAAU,CACN,CACI58B,KAAM,YACN4f,KAAM,+BACNw0C,MAAO,CAAC,WAEZ,CACIp0D,KAAM,UACN4f,KAAM,6BACNw0C,MAAO,CAAC,WAEZ,CACIp0D,KAAM,aACN4f,KAAM,iCAEV,CACI5f,KAAM,aACN4f,KAAM,gCACNw0C,MAAO,CAAC,YAEZ,CACIp0D,KAAM,WACN4f,KAAM,8BACNw0C,MAAO,CAAC,YAEZ,CACIp0D,KAAM,cACN4f,KAAM,kCAEV,CACI5f,KAAM,+BACN4f,KAAM,iCACNw0C,MAAO,CAAC,4BAEZ,CACIp0D,KAAM,yBACN4f,KAAM,2BACNw0C,MAAO,CACH,0BACA,iCACA,+BAKhB,CACIA,MAAO,CAAC,aAAc,cACtBx0C,KAAM,CAAC,yBACP49B,KAAM,mBACNx9C,KAAM,kBACNne,GAAI,aACJ+6C,SAAU,CACN,CACI58B,KAAM,wBACN4f,KAAM,yBAEV,CACI5f,KAAM,qBACN4f,KAAM,qBACNw0C,MAAO,CAAC,mBAEZ,CACIp0D,KAAM,sBACN4f,KAAM,yBAIlB,CACIw0C,MAAO,CAAC,gBAAiB,iBACzBx0C,KAAM,CAAC,kBACP49B,KAAM,sBACNx9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,gBACN4f,KAAM,CAAC,kBACPw0C,MAAO,CAAC,gBAAiB,iBACzBG,YAAY,GAEhB,CAKIv0D,KAAM,4BACN4f,KAAM,sBAEV,CACI5f,KAAM,0BACN4f,KAAM,sBAIlB,CACIw0C,MAAO,CAAC,gCAAiC,kBACzCx0C,KAAM,CAAC,sBACP49B,KAAM,sBACNx9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,gBACN4f,KAAM,CAAC,kBACPw0C,MAAO,CAAC,iBACRG,YAAY,GAEhB,CACIv0D,KAAM,4BACN4f,KAAM,sBAEV,CACI5f,KAAM,0BACN4f,KAAM,oBAEV,CACI5f,KAAM,yBACN4f,KAAM,qBAIlB,CACIw0C,MAAO,CAAC,kBAAmB,iBAC3Bx0C,KAAM,CAAC,sBACP49B,KAAM,sBACNx9C,KAAM,mBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,yBACN4f,KAAM,sBAEV,CACI5f,KAAM,0BACN4f,KAAM,qBACNw0C,MAAO,CAAC,0BAA2B,yBAEvC,CACIp0D,KAAM,wBACN4f,KAAM,mBACNw0C,MAAO,CAAC,0BAA2B,0BAI/C,CACIA,MAAO,CAAC,iBACRx0C,KAAM,CAAC,oBACP49B,KAAM,sBACNx9C,KAAM,iBACNne,GAAI,aAER,CACIuyE,MAAO,CAAC,YACRx0C,KAAM,CAAC,SACP49B,KAAM,kBACNx9C,KAAM,aACNne,GAAI,QACJ+6C,SAAU,CACN,CACI58B,KAAM,qBACN4f,KAAM,eAEV,CACI5f,KAAM,wBACN4f,KAAM,aACNw0C,MAAO,CAAC,mBAEZ,CACIp0D,KAAM,6BACN4f,KAAM,sBACNw0C,MAAO,CAAC,mBAEZ,CACIp0D,KAAM,4BACN4f,KAAM,gBAEV,CACI5f,KAAM,uBACN4f,KAAM,iBAEV,CACI5f,KAAM,wBACN4f,KAAM,kBAEV,CACI5f,KAAM,sBACN4f,KAAM,eACNw0C,MAAO,CAAC,mBAEZ,CACIp0D,KAAM,sBACN4f,KAAM,kBACNw0C,MAAO,CAAC,kBAAmB,wBAE/B,CACIp0D,KAAM,6BACN4f,KAAM,sBACNw0C,MAAO,CAAC,mBAEZ,CACIp0D,KAAM,4BACN4f,KAAM,qBACNw0C,MAAO,CAAC,iBAAkB,yBAE9B,CACIp0D,KAAM,wBACN4f,KAAM,kBACNw0C,MAAO,CAAC,sBAEZ,CACIp0D,KAAM,4BACN4f,KAAM,qBACNw0C,MAAO,CAAC,0BAEZ,CACIp0D,KAAM,qCACN4f,KAAM,8BACNw0C,MAAO,CAAC,gCAAiC,gBAE7C,CACIp0D,KAAM,qCACN4f,KAAM,8BACNw0C,MAAO,CAAC,iCAAkC,kBAItD,CACIA,MAAO,CAAC,eACRx0C,KAAM,CAAC,YACP49B,KAAM,qBACNx9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,2BACN4f,KAAM,kBAEV,CACI5f,KAAM,8BACN4f,KAAM,oBAEV,CACI5f,KAAM,2BACN4f,KAAM,oBACNw0C,MAAO,CAAC,cAAe,uBAE3B,CACIp0D,KAAM,8BACN4f,KAAM,uBACNw0C,MAAO,CAAC,cAAe,mBAE3B,CACIp0D,KAAM,yBACN4f,KAAM,kBACNw0C,MAAO,CAAC,cAAe,UAAW,aAEtC,CACIp0D,KAAM,wBACN4f,KAAM,iBACNw0C,MAAO,CAAC,gBAAiB,WAIrC,CACIA,MAAO,CAAC,2BAA4B,yBACpCx0C,KAAM,CAAC,oBACP49B,KAAM,qBACNx9C,KAAM,wBACNne,GAAI,oBAER,CACIuyE,MAAO,CAAC,mBAAoB,yBAC5Bx0C,KAAM,CAAC,yBACP49B,KAAM,qBACNx9C,KAAM,sBACNne,GAAI,iBACJ+6C,SAAU,CACN,CACI58B,KAAM,+BACN4f,KAAM,yBAEV,CACI5f,KAAM,4BACN4f,KAAM,+BAIlB,CACIw0C,MAAO,CAAC,gBACRx0C,KAAM,CAAC,aACP49B,KAAM,gCACNx9C,KAAM,iBACNne,GAAI,YACJ+6C,SAAU,CACN,CACI58B,KAAM,gBACN4f,KAAM,mBAEV,CACI5f,KAAM,gBACN4f,KAAM,iBACNw0C,MAAO,CACH,kBACA,gCACA,6BAGR,CACIp0D,KAAM,iBACN4f,KAAM,kBACNw0C,MAAO,CAAC,qBAAsB,2CAElC,CACIp0D,KAAM,mBACN4f,KAAM,qBAEV,CACI5f,KAAM,oBACN4f,KAAM,wBAIlB,CACIw0C,MAAO,CAAC,sBACRx0C,KAAM,CAAC,yBACP49B,KAAM,mBACNx9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,wBACN4f,KAAM,wBACNw0C,MAAO,CAAC,uBAEZ,CACIp0D,KAAM,gCACN4f,KAAM,gCACNw0C,MAAO,CAAC,uBAEZ,CACIp0D,KAAM,mBACN4f,KAAM,mBACNw0C,MAAO,CAAC,oBAEZ,CACIp0D,KAAM,eACN4f,KAAM,eACNw0C,MAAO,CAAC,uBAEZ,CACIp0D,KAAM,kBACN4f,KAAM,kBACNw0C,MAAO,CAAC,yBAIpB,CACIA,MAAO,CAAC,WAAY,iBACpBx0C,KAAM,CAAC,UACP49B,KAAM,kBACNx9C,KAAM,cACNne,GAAI,SACJ+6C,SAAU,CACN,CACI58B,KAAM,uBACN4f,KAAM,uBACNw0C,MAAO,CAAC,oBAEZ,CACIp0D,KAAM,wBACN4f,KAAM,wBACNw0C,MAAO,CAAC,kBAAmB,mBAE/B,CACIp0D,KAAM,yBACN4f,KAAM,uBACNw0C,MAAO,CAAC,2BAEZ,CACIp0D,KAAM,yBACN4f,KAAM,0BACNw0C,MAAO,CAAC,sBAAuB,4BAEnC,CACIp0D,KAAM,uBACN4f,KAAM,wBAEV,CACI5f,KAAM,sBACN4f,KAAM,qBACNw0C,MAAO,CAAC,aAAc,2BAE1B,CACIp0D,KAAM,4BACN4f,KAAM,0BACNw0C,MAAO,CAAC,kBAIpB,CACIA,MAAO,CAAC,+BAAgC,gBACxCx0C,KAAM,CAAC,aACP49B,KAAM,qBACNx9C,KAAM,mBACNne,GAAI,cAER,CAIIuyE,MAAO,CAAC,sBACRx0C,KAAM,CAAC,oBAAqB,YAC5B49B,KAAM,iBACNx9C,KAAM,iBACN48B,SAAU,CACN,CACI58B,KAAM,iBACN4f,KAAM,CAAC,oBAAqB,YAC5Bw0C,MAAO,CAAC,oBAEZ,CACIp0D,KAAM,gBACN4f,KAAM,CAAC,oBAAqB,mBAC5Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,aACN4f,KAAM,CAAC,oBAAqB,QAC5Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,eACN4f,KAAM,CAAC,oBAAqB,UAC5Bw0C,MAAO,CAAC,kBAEZ,CACIp0D,KAAM,iBACN4f,KAAM,CAAC,oBAAqB,YAC5Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,wBACN4f,KAAM,CAAC,oBAAqB,mBAC5Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,yBACN4f,KAAM,CAAC,oBAAqB,oBAC5Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,kBACN4f,KAAM,CAAC,oBAAqB,aAC5Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,wBACN4f,KAAM,CAAC,oBAAqB,mBAC5Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,gBACN4f,KAAM,CAAC,sBAAuB,YAC9Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,4BACN4f,KAAM,CAAC,sBAAuB,uBAC9Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,mBACN4f,KAAM,CAAC,sBAAuB,eAC9Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,mBACN4f,KAAM,CAAC,sBAAuB,eAC9Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,yBACN4f,KAAM,CAAC,sBAAuB,qBAC9Bw0C,MAAO,CAAC,cAAe,gBAE3B,CACIp0D,KAAM,yBACN4f,KAAM,CAAC,sBAAuB,qBAC9Bw0C,MAAO,CAAC,cAAe,gBAE3B,CACIp0D,KAAM,kBACN4f,KAAM,CAAC,sBAAuB,cAC9Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,gBACN4f,KAAM,CAAC,sBAAuB,YAC9Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,0BACN4f,KAAM,CAAC,sBAAuB,sBAC9Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,qBACN4f,KAAM,CAAC,oBAAqB,iBAC5Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,kBACN4f,KAAM,CAAC,oBAAqB,cAC5Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,mBACN4f,KAAM,CAAC,oBAAqB,eAC5Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,qBACN4f,KAAM,CAAC,oBAAqB,gBAC5Bw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,WACN4f,KAAM,CAAC,sBAAuB,OAC9Bw0C,MAAO,CAAC,kBAIpB,CACIA,MAAO,CAAC,qBAAsB,eAC9Bx0C,KAAM,CAAC,qCACP49B,KAAM,sBACNx9C,KAAM,oBACN48B,SAAU,IAEd,CACIw3B,MAAO,CAAC,qBAAsB,eAC9Bx0C,KAAM,CAAC,kCACP49B,KAAM,mBACNx9C,KAAM,oBACN48B,SAAU,IAEd,CACIw3B,MAAO,CAAC,qBAAsB,eAC9Bx0C,KAAM,CAAC,UACP49B,KAAM,kBACNx9C,KAAM,cACN48B,SAAU,IAEd,CAIIw3B,MAAO,CAAC,eACRx0C,KAAM,CAAC,YACP49B,KAAM,qBACNx9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,mBACN4f,KAAM,uBAEV,CACI5f,KAAM,yBACN4f,KAAM,6BACNw0C,MAAO,CAAC,mCAEZ,CACIp0D,KAAM,wBACN4f,KAAM,wBACNw0C,MAAO,CAAC,uBAEZ,CAEIp0D,KAAM,8BACN4f,KAAM,8BACNw0C,MAAO,CAAC,gCAEZ,CACIp0D,KAAM,iBACN4f,KAAM,iBACN00C,UAAW,CAAC,uBACZF,MAAO,CAAC,yBAEZ,CACIp0D,KAAM,oBACN4f,KAAM,oBACNw0C,MAAO,CAAC,yBAEZ,CACIp0D,KAAM,mBACN4f,KAAM,mBACNw0C,MAAO,CAAC,cAAe,WAAY,kCAEvC,CACIp0D,KAAM,mBACN4f,KAAM,sBAIlB,CAEIw0C,MAAO,CAAC,oCAAqC,uBAC7Cx0C,KAAM,CAAC,gBACP49B,KAAM,oBACNx9C,KAAM,oBACNne,GAAI,gBAER,CACIuyE,MAAO,CAAC,mCAAoC,uBAC5Cx0C,KAAM,CAAC,iBACP49B,KAAM,oBACNx9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,gBACN4f,KAAM,iBAEV,CACI5f,KAAM,gCACN4f,KAAM,2BACNw0C,MAAO,CAAC,iBAAkB,gBAAiB,4BAIvD,CACIA,MAAO,CAAC,iBAAkB,eAC1Bx0C,KAAM,CAAC,SACP49B,KAAM,uBACNx9C,KAAM,aACNne,GAAI,SAER,CACIuyE,MAAO,CAAC,WAAY,eACpBx0C,KAAM,CAAC,gBACP49B,KAAM,mBACNx9C,KAAM,oBACNne,GAAI,eACJ+6C,SAAU,CACN,CACI58B,KAAM,wBACN4f,KAAM,sBAEV,CACI5f,KAAM,2BACN4f,KAAM,uBAEV,CACI5f,KAAM,yBACN4f,KAAM,oBACNw0C,MAAO,CAAC,gBAEZ,CACIp0D,KAAM,kCACN4f,KAAM,6BACNw0C,MAAO,CAAC,uBAIpB,CACIA,MAAO,CAAC,eACRx0C,KAAM,CAAC,eACP49B,KAAM,qBACNx9C,KAAM,cACNne,GAAI,cACJ+6C,SAAU,CACN,CACI58B,KAAM,cACN4f,KAAM,qBAEV,CACI5f,KAAM,oBACN4f,KAAM,gCAEV,CACI5f,KAAM,OACN4f,KAAM,oBAEV,CACI5f,KAAM,eACN4f,KAAM,0BACNw0C,MAAO,CAAC,YAEZ,CACIp0D,KAAM,QACN4f,KAAM,qBAEV,CACI5f,KAAM,eACN4f,KAAM,4BAEV,CACI5f,KAAM,gBACN4f,KAAM,6BAEV,CACI5f,KAAM,WACN4f,KAAM,uBAEV,CACI5f,KAAM,YACN4f,KAAM,yBAEV,CACI5f,KAAM,cACN4f,KAAM,0BAEV,CACI5f,KAAM,YACN4f,KAAM,wBAEV,CACI5f,KAAM,WACN4f,KAAM,wBAEV,CACI5f,KAAM,UACN4f,KAAM,sBACNw0C,MAAO,CAAC,qBAEZ,CAEIp0D,KAAM,SACN4f,KAAM,yBA83BlB40C,YAx3BU,CACV,CAEIhX,KAAM,iBACNx9C,KAAM,iBACN4f,KAAM,QACNr+B,MAAO,WACPM,GAAI,WACJuyE,MAAO,CACH,eACA,WACA,2DACA,0BACA,gCAEJx3B,SAAU,CACN,CACI58B,KAAM,oBACN4f,KAAM,CAAC,iBACPw0C,MAAO,CAAC,gBACRjvB,MAAO,YAEX,CACInlC,KAAM,iBACN4f,KAAM,CAAC,4BACPw0C,MAAO,CACH,eACA,WACA,2DACA,2BAEJjvB,MAAO,cAInB,CACIqY,KAAM,iBACNx9C,KAAM,oBACN4f,KAAM,QACNr+B,MAAO,WACPM,GAAI,WACJuyE,MAAO,CACH,eACA,eACA,+BACA,+BACA,0BACA,gCAEJx3B,SAAU,CACN,CACI58B,KAAM,oBACN4f,KAAM,CAAC,iBACPw0C,MAAO,CAAC,gBACRjvB,MAAO,YAEX,CACInlC,KAAM,oBACN4f,KAAM,CAAC,mBACPw0C,MAAO,CACH,eACA,eACA,+BACA,+BACA,2BAEJjvB,MAAO,cAInB,CACIqY,KAAM,iBACNx9C,KAAM,oBACN4f,KAAM,QACNr+B,MAAO,WACPM,GAAI,WACJuyE,MAAO,CACH,gBACA,eACA,0BACA,gCAEJx3B,SAAU,CACN,CACI58B,KAAM,oBACN4f,KAAM,CAAC,iBACPw0C,MAAO,CAAC,gBACRjvB,MAAO,YAEX,CACInlC,KAAM,oBACN4f,KAAM,CAAC,mBACPw0C,MAAO,CAAC,gBAAiB,eAAgB,2BACzCjvB,MAAO,YAEX,CACInlC,KAAM,2BACN4f,KAAM,CAAC,4BACPw0C,MAAO,CACH,gBACA,WACA,8DACA,2BAEJjvB,MAAO,cAInB,CAEIqY,KAAM,iBACNx9C,KAAM,iBACN4f,KAAM,CAAC,4BACP/9B,GAAI,WACJuyE,MAAO,CACH,eACA,WACA,2DACA,0BACA,iCAEJx3B,SAAU,CACN,CACI58B,KAAM,oBACN4f,KAAM,CAAC,iBACPw0C,MAAO,CAAC,iBAEZ,CACIp0D,KAAM,iBACN4f,KAAM,CAAC,4BACPw0C,MAAO,CACH,eACA,WACA,2DACA,8BAKhB,CACI5W,KAAM,iBACNx9C,KAAM,oBACN4f,KAAM,CAAC,mBACP/9B,GAAI,WACJuyE,MAAO,CACH,eACA,eACA,+BACA,+BACA,0BACA,iCAEJx3B,SAAU,CACN,CACI58B,KAAM,oBACN4f,KAAM,CAAC,iBACPw0C,MAAO,CAAC,iBAEZ,CACIp0D,KAAM,oBACN4f,KAAM,CAAC,mBACPw0C,MAAO,CACH,eACA,eACA,+BACA,+BACA,8BAKhB,CACI5W,KAAM,iBACNx9C,KAAM,oBACN4f,KAAM,CAAC,mBACP/9B,GAAI,WACJuyE,MAAO,CACH,gBACA,eACA,0BACA,iCAEJx3B,SAAU,CACN,CACI58B,KAAM,oBACN4f,KAAM,CAAC,iBACPw0C,MAAO,CAAC,iBAEZ,CACIp0D,KAAM,oBACN4f,KAAM,CAAC,mBACPw0C,MAAO,CAAC,gBAAiB,eAAgB,4BAE7C,CACIp0D,KAAM,2BACN4f,KAAM,CAAC,4BACPw0C,MAAO,CACH,gBACA,WACA,8DACA,8BAKhB,CACI5W,KAAM,oBACNx9C,KAAM,oBACN4f,KAAM,CAAC,qBACP/9B,GAAI,aACJuyE,MAAO,CAAC,YAAY,iBAExB,CAEI5W,KAAM,6BACNx9C,KAAM,yBACN4f,KAAM,QACNr+B,MAAO,gBACPM,GAAI,gBACJuyE,MAAO,CAAC,oBAAqB,+CAEjC,CAEI5W,KAAM,6BACNx9C,KAAM,yBACN4f,KAAM,CAAC,qBACP/9B,GAAI,gBACJuyE,MAAO,CAAC,oBAAqB,gDAEjC,CAEI5W,KAAM,6BACNx9C,KAAM,aACN4f,KAAM,QACNr+B,MAAO,QACPM,GAAI,QACJuyE,MAAO,CAAC,YAAa,uCAEzB,CAEI5W,KAAM,6BACNx9C,KAAM,aACN4f,KAAM,CAAC,gBACP/9B,GAAI,QACJuyE,MAAO,CAAC,YAAa,wCAEzB,CACI5W,KAAM,gBACNx9C,KAAM,mBACN4f,KAAM,QACNr+B,MAAO,UACPM,GAAI,UACJuyE,MAAO,CAAC,cAAe,WAAY,2BACnCx3B,SAAU,CACN,CACI58B,KAAM,4BACN4f,KAAM,CAAC,yBACPw0C,MAAO,CAAC,cAAe,WAAY,4BAEvC,CACIp0D,KAAM,0BACN4f,KAAM,CAAC,gBACPw0C,MAAO,CAAC,cAAe,WAAY,8BAI/C,CACI5W,KAAM,sBACNx9C,KAAM,gBACN4f,KAAM,CAAC,YACP/9B,GAAI,OACJuyE,MAAO,CAAC,oBAEZ,CAGI5W,KAAM,mBACNx9C,KAAM,oBACN4f,KAAM,CAAC,iBACP/9B,GAAI,WACJuyE,MAAO,CAAC,eAAgB,oBAAqB,+CAC7Cx3B,SAAU,CACN,CACI58B,KAAM,oBACN4f,KAAM,CAAC,iBACPw0C,MAAO,CAAC,gBACRG,YAAY,GAEhB,CACIv0D,KAAM,iBACN4f,KAAM,CAAC,4BACPw0C,MAAO,CACH,cACA,WACA,2DACA,2BAEJG,YAAY,GAEhB,CACIv0D,KAAM,oBACN4f,KAAM,CAAC,mBACPw0C,MAAO,CACH,cACA,eACA,+BACA,+BACA,2BAEJG,YAAY,GAEhB,CACIv0D,KAAM,oBACN4f,KAAM,CAAC,mBACPw0C,MAAO,CAAC,eAAgB,eAAgB,2BACxCG,YAAY,KAIxB,CAEI/W,KAAM,mBACNx9C,KAAM,oBACN4f,KAAM,QACNr+B,MAAO,WACPM,GAAI,WACJuyE,MAAO,CACH,eACA,oBACA,+BACA,iBAEJx3B,SAAU,CACN,CACI58B,KAAM,oBACN4f,KAAM,CAAC,iBACPw0C,MAAO,CAAC,gBACRG,YAAY,EACZpvB,MAAO,YAEX,CACInlC,KAAM,iBACN4f,KAAM,CAAC,4BACPw0C,MAAO,CACH,cACA,WACA,2DACA,2BAEJG,YAAY,EACZpvB,MAAO,YAEX,CACInlC,KAAM,oBACN4f,KAAM,CAAC,mBACPw0C,MAAO,CACH,cACA,eACA,+BACA,+BACA,2BAEJG,YAAY,EACZpvB,MAAO,YAEX,CACInlC,KAAM,oBACN4f,KAAM,CAAC,mBACPw0C,MAAO,CAAC,eAAgB,eAAgB,2BACxCG,YAAY,EACZpvB,MAAO,cAInB,CAGIqY,KAAM,mBACNx9C,KAAM,oBACN4f,KAAM,CAAC,iBACP/9B,GAAI,WACJuyE,MAAO,CACH,eACA,oBACA,eACA,iCAEJx3B,SAAU,CACN,CACI58B,KAAM,oBACN4f,KAAM,CAAC,iBACPw0C,MAAO,CAAC,gBACRG,YAAY,GAEhB,CACIv0D,KAAM,iBACN4f,KAAM,CAAC,4BACPw0C,MAAO,CACH,cACA,WACA,2DACA,2BAEJG,YAAY,GAEhB,CACIv0D,KAAM,oBACN4f,KAAM,CAAC,mBACPw0C,MAAO,CACH,cACA,eACA,+BACA,+BACA,2BAEJG,YAAY,GAEhB,CACIv0D,KAAM,oBACN4f,KAAM,CAAC,mBACPw0C,MAAO,CAAC,eAAgB,eAAgB,2BACxCG,YAAY,KAIxB,CAEI/W,KAAM,mBACNx9C,KAAM,oBACN4f,KAAM,QACNr+B,MAAO,WACPM,GAAI,WACJuyE,MAAO,CACH,eACA,oBACA,eACA,gCAEJx3B,SAAU,CACN,CACI58B,KAAM,oBACN4f,KAAM,CAAC,iBACPw0C,MAAO,CAAC,gBACRG,YAAY,EACZpvB,MAAO,YAEX,CACInlC,KAAM,iBACN4f,KAAM,CAAC,4BACPw0C,MAAO,CACH,cACA,WACA,2DACA,2BAEJG,YAAY,EACZpvB,MAAO,YAEX,CACInlC,KAAM,oBACN4f,KAAM,CAAC,mBACPw0C,MAAO,CACH,cACA,eACA,+BACA,+BACA,2BAEJG,YAAY,EACZpvB,MAAO,YAEX,CACInlC,KAAM,oBACN4f,KAAM,CAAC,mBACPw0C,MAAO,CAAC,eAAgB,eAAgB,2BACxCG,YAAY,EACZpvB,MAAO,cAInB,CAEIqY,KAAM,mBACNx9C,KAAM,oBACN4f,KAAM,QACNr+B,MAAO,WACPM,GAAI,WACJuyE,MAAO,CAAC,eAAgB,oBAAqB,kBAEjD,CACI5W,KAAM,qBACNx9C,KAAM,uBACN4f,KAAM,CAAC,oBACP/9B,GAAI,cACJuyE,MAAO,CAAC,oBAEZ,CACI5W,KAAM,mBACNx9C,KAAM,cACN4f,KAAM,CAAC,8BAA+B,MAAO,MAC7C/9B,GAAI,KACJuyE,MAAO,CAAC,WAEZ,CACI5W,KAAM,qBACNx9C,KAAM,eACN4f,KAAM,CAAC,8BAA+B,MAAO,OAC7C/9B,GAAI,MACJuyE,MAAO,CAAC,YAEZ,CACI5W,KAAM,mBACNx9C,KAAM,sBACN4f,KAAM,CAAC,mBACP/9B,GAAI,aACJuyE,MAAO,CAAC,mBAEZ,CACI5W,KAAM,iBACNx9C,KAAM,kBACN4f,KAAM,CAAC,yBACP/9B,GAAI,WACJuyE,MAAO,CACH,eACA,oDACA,iBAGR,CACI5W,KAAM,iBACNx9C,KAAM,kBACN4f,KAAM,QACNr+B,MAAO,SACPM,GAAI,SACJuyE,MAAO,CAAC,aAAc,iBAE1B,CACI5W,KAAM,sBACNx9C,KAAM,oBACN4f,KAAM,QACNr+B,MAAO,WACPM,GAAI,WACJuyE,MAAO,CAAC,iBAEZ,CACI5W,KAAM,kBACNx9C,KAAM,gBACN4f,KAAM,CAAC,aACP/9B,GAAI,OACJuyE,MAAO,CAAC,aAEZ,CAEI5W,KAAM,qBACNx9C,KAAM,mBACN4f,KAAM,QACNr+B,MAAO,UACPM,GAAI,UACJuyE,MAAO,CAAC,cAAe,0CAE3B,CAEI5W,KAAM,qBACNx9C,KAAM,mBACN4f,KAAM,CAAC,gBACP/9B,GAAI,UACJuyE,MAAO,CAAC,cAAe,2CAE3B,CACI5W,KAAM,mBACNx9C,KAAM,uBACN4f,KAAM,CAAC,gCACP/9B,GAAI,cACJuyE,MAAO,CAAC,oBAEZ,CACI5W,KAAM,mBACNx9C,KAAM,eACN4f,KAAM,QACNr+B,MAAO,WACPM,GAAI,WACJuyE,MAAO,CAAC,iBAEZ,CACI5W,KAAM,qBACNx9C,KAAM,qBACN4f,KAAM,CAAC,qBACP/9B,GAAI,WACJuyE,MAAO,CAAC,kCAEZ,CAEI5W,KAAM,gCACNx9C,KAAM,oBACN4f,KAAM,QACNr+B,MAAO,WACPM,GAAI,WACJuyE,MAAO,CAAC,eAAgB,2CAE5B,CAEI5W,KAAM,gCACNx9C,KAAM,oBACN4f,KAAM,CAAC,iBACP/9B,GAAI,WACJuyE,MAAO,CAAC,eAAgB,4CAE5B,CACI5W,KAAM,oBACNx9C,KAAM,mBACN4f,KAAM,CAAC,oBACP/9B,GAAI,eACJuyE,MAAO,CAAC,oCAAqC,cAAe,wBAEhE,CACI5W,KAAM,oBACNx9C,KAAM,mBACN4f,KAAM,CAAC,gBACP/9B,GAAI,UACJuyE,MAAO,CACH,mCACA,2BACA,wBAGR,CAEI5W,KAAM,kBACNx9C,KAAM,oBACN4f,KAAM,CAAC,gBACP/9B,GAAI,eACJuyE,MAAO,CAAC,sBAAuB,kCAEnC,CAEIp0D,KAAM,mBACN4f,KAAM,CAAC,iBAAkB,mBACzB/9B,GAAI,UACJuyE,MAAO,CAAC,qBAAsB,wBAElC,CACIp0D,KAAM,oBACN4f,KAAM,CAAC,iBAAkB,YACzB/9B,GAAI,WACJuyE,MAAO,CAAC,qBAAsB,iBAElC,CACIp0D,KAAM,2BACN4f,KAAM,CAAC,iBAAkB,mBACzB/9B,GAAI,kBACJuyE,MAAO,CAAC,qBAAsB,wBAElC,CACIp0D,KAAM,4BACN4f,KAAM,CAAC,iBAAkB,oBACzB/9B,GAAI,mBACJuyE,MAAO,CAAC,qBAAsB,yBAElC,CACIp0D,KAAM,qBACN4f,KAAM,CAAC,iBAAkB,aACzB/9B,GAAI,YACJuyE,MAAO,CAAC,qBAAsB,kBAElC,CACIp0D,KAAM,mBACN4f,KAAM,CAAC,iBAAkB,QACzB/9B,GAAI,UACJuyE,MAAO,CAAC,qBAAsB,WAAY,cAAe,mBAE7D,CACIp0D,KAAM,kBACN4f,KAAM,CAAC,iBAAkB,UACzB/9B,GAAI,SACJuyE,MAAO,CAAC,qBAAsB,aAAc,cAAe,mBAE/D,CACIp0D,KAAM,2BACN4f,KAAM,QACNr+B,MAAO,kBACPM,GAAI,kBACJuyE,MAAO,CAAC,qBAAsB,wBAElC,CACIp0D,KAAM,wBACN4f,KAAM,CAAC,iBAAkB,gBACzB/9B,GAAI,eACJuyE,MAAO,CAAC,qBAAsB,qBAElC,CACIp0D,KAAM,qBACN4f,KAAM,CAAC,2BACP/9B,GAAI,gBACJuyE,MAAO,CAAC,uBAEZ,CACIp0D,KAAM,kBACN4f,KAAM,CAAC,qBACP/9B,GAAI,YACJuyE,MAAO,CAAC,qBAAsB,cAAe,iBAEjD,CACIp0D,KAAM,iBACN4f,KAAM,QACNr+B,MAAO,QACPM,GAAI,QACJuyE,MAAO,CAAC,qBAAsB,gBAElC,CAEI5W,KAAM,gBACNx9C,KAAM,2BACNne,GAAI,kBACJ+9B,KAAM,CAAC,4BACPw0C,MAAO,CAAC,cAAe,sBAE3B,CACI5W,KAAM,qBACNx9C,KAAM,kBACNne,GAAI,aACJ+9B,KAAM,2JACNw0C,MAAO,CAAC,cAAe,oCAE3B,CACI5W,KAAM,6BACNx9C,KAAM,2CACNne,GAAI,qBACJ+9B,KAAM,CAAC,8BACPw0C,MAAO,CAAC,oBAEZ,CAEI5W,KAAM,iBACNx9C,KAAM,mCACN4f,KAAM,QACN/9B,GAAI,0BACJN,MAAO,0BACP6yE,MAAO,CAAC,0BAA2B,uDAEvC,CAEI5W,KAAM,iBACNx9C,KAAM,mCACN4f,KAAM,CAAC,+BACP/9B,GAAI,0BACJuyE,MAAO,CAAC,0BAA2B,wDAEvC,CACI5W,KAAM,iBACNx9C,KAAM,6BACN4f,KAAM,QACNr+B,MAAO,oBACPM,GAAI,oBACJuyE,MAAO,CAAC,oBAAqB,0BAEjC,CACI5W,KAAM,iBACNx9C,KAAM,oBACN4f,KAAM,CAAC,iBACP/9B,GAAI,WACJuyE,MAAO,CAAC,iBAEZ,CACI5W,KAAM,mBACNx9C,KAAM,gBACN4f,KAAM,QACNr+B,MAAO,OACPM,GAAI,OACJuyE,MAAO,CAAC,WAAY,iBAExB,CACI5W,KAAM,sBACNx9C,KAAM,gBACN4f,KAAM,QACNr+B,MAAO,OACPM,GAAI,OACJuyE,MAAO,CAAC,WAAY,kBAExB,CACI5W,KAAM,oBACNx9C,KAAM,kBACN4f,KAAM,QACNr+B,MAAO,SACPM,GAAI,SACJuyE,MAAO,CAAC,oBAEZ,CACI5W,KAAM,mBACNx9C,KAAM,uBACN4f,KAAM,QACNr+B,MAAO,WACPM,GAAI,WACJuyE,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,CACN9oE,QAAS,CACLS,SAAU,CACN+sB,MAAM,MA+ClBu7C,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,CACIj0E,MAAO,oBAEX,CACI8J,KAAM,mBACN2f,QAAQ,EACRzpB,MAAO,oCACPmzE,MAAO,IAEX,CACInzE,MAAO,yBACPmzE,MAAO,CAAC,uBACRr1D,UAAW,8CAEf,CACI9d,MAAO,8BACPypB,QAAQ,EACRyqD,WAAY,CAAC,uBACbC,YAAa,CAAC,wBACdhB,MAAO,CAAC,yBAEZ,CACIrpE,KAAM,yBACN9J,MAAO,gCACPmzE,MAAO,CAAC,yBAEZ,CACInzE,MAAO,oCACPk0E,WAAY,CAAC,8BACbC,YAAa,CAAC,+BACdhB,MAAO,CAAC,yBAEZ,CACInzE,MAAO,uCACPypB,QAAQ,EACRyqD,WAAY,CAAC,gCACbC,YAAa,CAAC,iCACdhB,MAAO,CAAC,yBAEZ,CACInzE,MAAO,+BACPypB,QAAQ,EACRyqD,WAAY,CAAC,gCACbC,YAAa,CAAC,iCACdhB,MAAO,CAAC,2BAEZ,CACInzE,MAAO,sBACPypB,QAAQ,EACRjpB,KAAM,aACN0zE,WAAY,CAAC,qCACbC,YAAa,CAAC,sCACdhB,MAAO,CAAC,2BAEZ,CACInzE,MAAO,qCACPk0E,WAAY,CAAC,8BACbC,YAAa,CAAC,+BACdhB,MAAO,CAAC,wBAEZ,CACInzE,MAAO,4BACPk0E,WAAY,CAAC,gCACbC,YAAa,CAAC,iCACdhB,MAAO,CAAC,uBAAwB,gCAEpC,CACIrpE,KAAM,yBACNykD,QAAS,CACLzkD,KAAM,0BAEV9J,MAAO,iDACP8d,UAAW,4CACXq1D,MAAO,CAAC,sBAAuB,qBAC/BiB,kBAAmB,mCAEvB,CACItqE,KAAM,yBACNykD,QAAS,CACLzkD,KAAM,0BAEV9J,MAAO,iDACP8d,UAAW,4CACXq1D,MAAO,CAAC,sBAAuB,qBAC/BiB,kBAAmB,mCAEvB,CACIp0E,MAAO,gCACP8d,UAAW,4CACXywC,QAAS,CACLA,QAAS,eACT8lB,OAAQ,EACRC,WAAY,IACZnnB,KAAM,KAEVgmB,MAAO,CAAC,uBAEZ,CACIrpE,KAAM,yBACN9J,MAAO,0CACPmzE,MAAO,CAAC,uBACR1pD,QAAQ,IAGhB8qD,oBAAqB,CACjB,CACIv0E,MAAO,wBAEX,CACI8J,KAAM,0BACN2f,QAAQ,EACRzpB,MAAO,2CACPmzE,MAAO,CAAC,uBACRqB,eAAe,EACfC,uBAAuB,EACvBC,gBAAiB,CACbvB,MAAO,CAAC,4CACRnzE,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,OACN2yE,MAAO,CAAC,uBACRqB,eAAe,GAEnB,CACIx0E,MAAO,oBACPk0E,WAAY,CAAC,qBACbC,YAAa,CAAC,sBACd3zE,KAAM,UACN2yE,MAAO,CAAC,sBAAuB,0CAEnC,CACInzE,MAAO,iCACPypB,QAAQ,EACR3L,UAAW,qBACXo2D,WAAY,CAAC,iBACbC,YAAa,CAAC,kBACdhB,MAAO,CAAC,uDAAwD,UAEpE,CACInzE,MAAO,qBACPk0E,WAAY,CAAC,wBACbC,YAAa,CAAC,yBACd3zE,KAAM,eACN2yE,MAAO,CAAC,wBAEZ,CACInzE,MAAO,0BACPk0E,WAAY,CAAC,2BACbC,YAAa,CAAC,4BACdhB,MAAO,CAAC,sBAAuB,yBAEnC,CACInzE,MAAO,oCACPk0E,WAAY,CAAC,oCAAqC,2BAClDC,YAAa,CAAC,qCAAsC,4BACpDhB,MAAO,CAAC,uBACRr1D,UAAW,8CACX02D,eAAe,EACfC,uBAAuB,GAE3B,CACIz0E,MAAO,4CACPk0E,WAAY,CAAC,mCACbC,YAAa,CAAC,oCACdhB,MAAO,CACH,sBACA,oBACA,gCACA,sCAGR,CACInzE,MAAO,uBACPypB,QAAQ,EACRyqD,WAAY,CAAC,2BACbC,YAAa,CAAC,iCAAkC,4BAChDhB,MAAO,CAAC,mBAAoB,kCAEhC,CACInzE,MAAO,uBACPypB,QAAQ,EACRyqD,WAAY,CAAC,wBACbC,YAAa,CAAC,yBACdhB,MAAO,CAAC,mBAAoB,0BAEhC,CACIrpE,KAAM,uBACN2f,QAAQ,EACRzpB,MAAO,iCACPmzE,MAAO,CAAC,mBAAoB,sBAEhC,CACInzE,MAAO,iCACPypB,QAAQ,EACRyqD,WAAY,CAAC,4CACbC,YAAa,CACT,gCACA,6CAEJhB,MAAO,CAAC,wBAEZ,CACInzE,MAAO,sCACPypB,QAAQ,EACRyqD,WAAY,CAAC,yCACbC,YAAa,CAAC,0CACdhB,MAAO,CAAC,wBAEZ,CACInzE,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,QACN2yE,MAAO,CAAC,wBAEZ,CACInzE,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,0CAGfmzE,MAAO,CAAC,wBAEZ,CACInzE,MAAO,oBACPk0E,WAAY,CAAC,qBACbC,YAAa,CAAC,sBACd3zE,KAAM,cACN2yE,MAAO,CAAC,uBACRqB,eAAe,GAEnB,CACIx0E,MAAO,4BACPypB,QAAQ,EACRyqD,WAAY,CAAC,6BACbC,YAAa,CAAC,8BACdhB,MAAO,CAAC,YAEZ,CACInzE,MAAO,qBACPypB,QAAQ,EACRyqD,WAAY,CAAC,qBACbC,YAAa,CAAC,sBACd3zE,KAAM,WACN2yE,MAAO,CAAC,wBAEZ,CACInzE,MAAO,yCACPypB,QAAQ,EACRyqD,WAAY,CAAC,iCACbC,YAAa,CAAC,kCACdhB,MAAO,CAAC,oBAAqB,sBAAuB,yBAExD,CACInzE,MAAO,uBACPk0E,WAAY,CAAC,wBACbC,YAAa,CAAC,yBACd3zE,KAAM,cACN2yE,MAAO,CAAC,sBAAuB,gCAAiC,yBAEpE,CACInzE,MAAO,6BACPk0E,WAAY,CAAC,kBACbC,YAAa,CAAC,mBACdr2D,UAAW,6CACXywC,QAAS,CACL/tD,KAAM,WACNC,MAAO,QACP8tD,QAAS,CAAEvuD,MAAO,gBAAiBhE,MAAO,KAE9Cm3E,MAAO,CAAC,uBACRqB,eAAe,EACfC,uBAAuB,GAE3B,CACIz0E,MAAO,6BACPk0E,WAAY,CAAC,kBACbC,YAAa,CAAC,mBACdr2D,UAAW,6CACXq1D,MAAO,CAAC,uBACRqB,eAAe,GAEnB,CACIx0E,MAAO,gCACPk0E,WAAY,CAAC,qBACbC,YAAa,CAAC,sBACdr2D,UAAW,gDACXq1D,MAAO,CAAC,uBACRsB,uBAAuB,EACvBD,eAAe,GAEnB,CACIx0E,MAAO,yBACPypB,QAAQ,EACRyqD,WAAY,CAAC,0BACbC,YAAa,CAAC,2BACdhB,MAAO,CAAC,wBAGZ,CACInzE,MAAO,0CACPypB,QAAQ,EACRyqD,WAAY,CAAC,+BACbC,YAAa,CAAC,gCACdhB,MAAO,CAAC,UAAW,+BAEvB,CACInzE,MAAO,oBACP20E,WAAY,gBACZC,YAAa,cACbV,WAAY,CAAC,eACbC,YAAa,CAAC,gBACd3zE,KAAM,cACN2yE,MAAO,CAAC,WAAY,yBAExB,CACInzE,MAAO,qBACPypB,QAAQ,EACRkrD,WAAY,iBACZC,YAAa,eACbV,WAAY,CAAC,YACbC,YAAa,CAAC,aACd3zE,KAAM,WACN2yE,MAAO,CAAC,WAAY,yBAExB,CACInzE,MAAO,kBACP20E,WAAY,cACZC,YAAa,eACbV,WAAY,CAAC,SACbC,YAAa,CAAC,UACd3zE,KAAM,QACN2yE,MAAO,CAAC,WAAY,yBAExB,CACInzE,MAAO,yBACPypB,QAAQ,EACRyqD,WAAY,CAAC,0BACbC,YAAa,CAAC,2BACd3zE,KAAM,gBACN2yE,MAAO,CAAC,wBAEZ,CACInzE,MAAO,sCACPk0E,WAAY,CAAC,uCACbC,YAAa,CAAC,wCACdhB,MAAO,CAAC,gBAAiB,kCAE7B,CACInzE,MAAO,wCACP4H,QAAS,CACL,CACIY,SAAU,CACN,+BACA,8BACA,mCAEJxI,MAAO,oCAEX,CACIwI,SAAU,CACN,+BACA,6BACA,mCAEJxI,MAAO,6BACP60E,kBAAkB,GAEtB,CACIrsE,SAAU,CACN,8BACA,8BACA,mCAEJxI,MAAO,+BAEX,CACIwI,SAAU,CACN,+BACA,8BACA,kCAEJxI,MAAO,mCAGfmzE,MAAO,CAAC,uBACRqB,eAAe,EACfC,uBAAuB,EACvBC,gBAAiB,CACbvB,MAAO,CACH,+BACA,8BACA,mCAEJnzE,MAAO,wDAEX80E,UAAU,GAEd,CACI90E,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,mCAGfmzE,MAAO,CAAC,wBAEZ,CACInzE,MAAO,+BACP4H,QAAS,CACL,CACIY,SAAU,CACN,gCACA,sCAEJxI,MAAO,qCAEX,CACIwI,SAAU,CACN,+BACA,sCAEJxI,MAAO,oCAEX,CACIwI,SAAU,CACN,gCACA,qCAEJxI,MAAO,sCAGfmzE,MAAO,CAAC,sBAAuB,sBAEnC,CACInzE,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,wCAGfmzE,MAAO,CACH,sBACA,gCACA,uEAGR,CACInzE,MAAO,kCACPypB,QAAQ,EACRyqD,WAAY,CAAC,uBACbC,YAAa,CAAC,wBACdhB,MAAO,CACH,sBACA,iCACA,yCAGR,CACInzE,MAAO,eACP4H,QAAS,CACL,CACIY,SAAU,CAAC,gBAAiB,uBAC5BxI,MAAO,qBAEX,CACIwI,SAAU,CAAC,eAAgB,uBAC3BxI,MAAO,oBAEX,CACIwI,SAAU,CAAC,gBAAiB,sBAC5BxI,MAAO,uBAGfmzE,MAAO,CAAC,wBAGZ,CACInzE,MAAO,sBACPQ,KAAM,aACN2yE,MAAO,CAAC,eAEZ,CACInzE,MAAO,uBACPypB,QAAQ,EACRjpB,KAAM,gBACN2yE,MAAO,CAAC,sBAAuB,wCAEnC,CACInzE,MAAO,uBACPypB,QAAQ,EACRyqD,WAAY,CAAC,6BACbC,YAAa,CAAC,8BACd3zE,KAAM,mBACN2yE,MAAO,CAAC,sBAAuB,yCAEnC,CACInzE,MAAO,uBACPQ,KAAM,cACNsd,UAAW,sBACXq1D,MAAO,CAAC,WAAY,gBAExB,CACInzE,MAAO,iCACPypB,QAAQ,EACRjpB,KAAM,wBACN2yE,MAAO,CAAC,0BAEZ,CACInzE,MAAO,iCACP8d,UAAW,+BACXywC,QAAS,CACL/tD,KAAM,WACNC,MAAO,OACP8tD,QAAS,CAAEzkD,KAAM,gBAAiB0+D,UAAW,IAAKxsE,MAAO,UACzD2L,KAAM,UAEVwrE,MAAO,CAAC,wBAEZ,CACInzE,MAAO,6BACPypB,QAAQ,EACRyqD,WAAY,CAAC,yBACbC,YAAa,CAAC,0BACdhB,MAAO,CAAC,wBAIZ,CACInzE,MAAO,+BACP4H,QAAS,CACL,CACImtE,SAAU,eACVvsE,SAAU,CAAC,eAAgB,oBAC3BxI,MAAO,gCAEX,CACI+0E,SAAU,aACVvsE,SAAU,CAAC,cAAe,oBAC1BxI,MAAO,2BAEX,CACI+0E,SAAU,iBACVvsE,SAAU,CAAC,eAAgB,mBAC3BxI,MAAO,+BAEX,CACI+0E,SAAU,eACVvsE,SAAU,CAAC,cAAe,mBAC1BxI,MAAO,mCAGfmzE,MAAO,CAAC,WAAY,yBAGxB,CACInzE,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,2CAGfmzE,MAAO,CAAC,wBAEZ,CACIrpE,KAAM,uBACNykD,QAAS,CACLzkD,KAAM,uBACNkrE,uBAAwB,6BAE5Bh1E,MAAO,qCACP8d,UAAW,4CACXq1D,MAAO,CAAC,sBAAuB,qBAC/B1pD,QAAQ,GAEZ,CACI3f,KAAM,uBACNykD,QAAS,CACLzkD,KAAM,uBACNkrE,uBAAwB,6BAE5Bh1E,MAAO,qCACP8d,UAAW,4CACXq1D,MAAO,CAAC,sBAAuB,qBAC/B1pD,QAAQ,GAEZ,CACI3f,KAAM,uBACNykD,QAAS,CACLzkD,KAAM,wBAEV9J,MAAO,wCACP8d,UAAW,4CACXq1D,MAAO,CAAC,WAAY,qBACpB1pD,QAAQ,GAEZ,CACI3f,KAAM,gBACNykD,QAAS,CACLzkD,KAAM,iBAEV9J,MAAO,iCACPmzE,MAAO,CAAC,WACR1pD,QAAQ,GAEZ,CACIzpB,MAAO,uCACPk0E,WAAY,CAAC,gCACbC,YAAa,CAAC,iCACdhB,MAAO,CAAC,YACR1pD,QAAQ,IAGhBwrD,aAAc,CACV,CACIj1E,MAAO,sBAEX,CACIA,MAAO,iBACPQ,KAAM,OACN2yE,MAAO,CAAC,OAAQ,yBAEpB,CACInzE,MAAO,4CACPk0E,WAAY,CAAC,8BACbC,YAAa,CAAC,+BACdhB,MAAO,CAAC,4BAEZ,CACInzE,MAAO,6CACPk0E,WAAY,CAAC,+BACbC,YAAa,CAAC,gCACdhB,MAAO,CAAC,4BAEZ,CACInzE,MAAO,2CACPk0E,WAAY,CAAC,6BACbC,YAAa,CAAC,8BACdhB,MAAO,CAAC,4BAEZ,CACInzE,MAAO,6CACPk0E,WAAY,CAAC,+BACbC,YAAa,CAAC,gCACdhB,MAAO,CAAC,6BAGhB+B,mBAAoB,CAChB,CACIl1E,MAAO,mBAEX,CACIA,MAAO,oCACPk0E,WAAY,CAAC,6BACbC,YAAa,CAAC,8BACdhB,MAAO,CAAC,wBAEZ,CACInzE,MAAO,sCACPk0E,WAAY,CAAC,+BACbC,YAAa,CAAC,gCACdhB,MAAO,CAAC,wBAEZ,CACInzE,MAAO,mCACPk0E,WAAY,CAAC,4BACbC,YAAa,CAAC,6BACdhB,MAAO,CAAC,wBAEZ,CACInzE,MAAO,sCACPk0E,WAAY,CAAC,+BACbC,YAAa,CAAC,gCACdhB,MAAO,CAAC,wBAEZ,CACInzE,MAAO,oCACPk0E,WAAY,CAAC,6BACbC,YAAa,CAAC,8BACdhB,MAAO,CAAC,wBAEZ,CACInzE,MAAO,mCACPk0E,WAAY,CAAC,4BACbC,YAAa,CAAC,6BACdhB,MAAO,CAAC,yBAGhBgC,oBAAqB,CACjB,CACIn1E,MAAO,yBAEX,CACI8J,KAAM,yBACN9J,MAAO,0CACPmzE,MAAO,CAAC,sDAEZ,CACInzE,MAAO,oDACPk0E,WAAY,CAAC,6CACbC,YAAa,CAAC,8CACdhB,MAAO,CAAC,sDAEZ,CACInzE,MAAO,sCACPk0E,WAAY,CAAC,+BACbC,YAAa,CAAC,gCACdhB,MAAO,CAAC,uDAGhBiC,YAAa,CACT,CACIp1E,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,uBAGfmzE,MAAO,CAAC,8DAEZ,CACIrpE,KAAM,uBACNykD,QAAS,CACLzkD,KAAM,uBACNkrE,uBAAwB,6BAE5Bh1E,MAAO,qCACP8d,UAAW,4CACXq1D,MAAO,CAAC,WAAY,qBACpB1pD,QAAQ,GAEZ,CACIzpB,MAAO,iCACPQ,KAAM,wBACN2yE,MAAO,CAAC,wBAAyB,cAErC,CACInzE,MAAO,qBACPk0E,WAAY,CAAC,qBACbC,YAAa,CAAC,sBACd3zE,KAAM,WACN2yE,MAAO,CAAC,WAAY,0BAExB,CACInzE,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,QACN2yE,MAAO,CAAC,WAAY,2BAG5BkC,kBAAmB,CACf,CACIr1E,MAAO,kBACPQ,KAAM,QACN2yE,MAAO,CAAC,qBAAsB,WAGtCmC,cAAe,CACX,CACIt1E,MAAO,kBAEX,CACI8J,KAAM,2BACN9J,MAAO,oCACPmzE,MAAO,CAAC,iBAAkB,wBAE9B,CACIrpE,KAAM,sBACN9J,MAAO,+BACPmzE,MAAO,CAAC,oBAGhBoC,gBAAiB,CACb,CACIv1E,MAAO,oBAEX,CACIA,MAAO,sBACPk0E,WAAY,CAAC,uBACbC,YAAa,CAAC,wBACdhB,MAAO,CAAC,oBACR3yE,KAAM;AC34BlB,IACIoF,EAAU,GAAGA,UAuBOpJ,MAAMg5E,WAAWn5E,OAAO4oE,EAAAA,QAAM,CAClDpoE,QAASL,MAAMC,OAAOC,UACtBK,cAAeP,MAAMC,OAAOC,UAC5B+hC,UAAWjiC,MAAMC,OAAOC,QAAQ,qBAChCE,KAAMJ,MAAMC,OAAOC,UACnByjD,UAAW3jD,MAAMC,OAAOC,UACxB6vD,IAAK/vD,MAAMC,OAAOC,UAClB+4E,iBAAkBj5E,MAAMC,OAAOC,UAC/BijB,IAAKnjB,MAAMC,OAAOC,UAClBg5E,QAASl5E,MAAMC,OAAOC,QAAQ,YAC9B0rE,OAAQ5rE,MAAMC,OAAOC,UACrBi5E,QAASn5E,MAAMC,OAAOC,UACtButC,oBAAqBztC,MAAMC,OAAOC,UAClC85B,UAAWh6B,MAAMC,OAAOC,UACxBkjB,QAASpjB,MAAMC,OAAOC,UACtBk5E,YAAap5E,MAAMC,OAAOC,UAC1Bm5E,iBAAkBr5E,MAAMC,OAAOC,UAC/BoQ,OAAQtQ,MAAMC,OAAOC,UACrBuuB,cAAezuB,MAAMC,OAAOC,UAC5Bo5E,WAAYt5E,MAAMC,OAAOC,QAAQ,eACjCmpC,YAAa,CAAC,QAAS,UACvBqe,MAAO,KACP6xB,YAAa,GACbj5E,MAAON,MAAMC,OAAOC,UACpBs5E,WAAYx5E,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,iBAElCy3E,gBAAiBz5E,MAAMwB,SAASkhC,MAAM,yCACtCg3C,cAAeniE,GAAG/V,UAAS,WACvB,SACK8O,SAASsB,OAAO,eAAiB,cAC9BtB,SAASsB,OAAO,eAAiB,cACrCnK,aAAaR,QAAQ,oBAM7B0yE,UAAW35E,MAAMwB,SAAS,SAAS,WAC/B,MAAiC,iBAAtBf,KAAKf,IAAI,UACTe,KAAKf,IAAI,SAASwQ,MAAM,KAAK,MAI5C0pE,UAAW55E,MAAMwB,SACb,sBACA,qBACA,kBACA,cACA,gBACA,WACI,GAAKf,KAAKf,IAAI,uBAGd,OAAOe,KAAKo5E,cAGpBC,cAAe95E,MAAMwB,SACjB,sBACA,qBACA,kBACA,eACA,eACA,WACI,IAAIwwD;AACJ,GAAKvxD,KAAKf,IAAI,uBAOd,OAHAsyD,EADKvxD,KAAKf,IAAI,uBACF8zC,eAAe,gBACnB/yC,KAAKo5E,WACKlmE,OAASq+C,EAAOr+C,QACjB,KAMzBomE,SAAU/5E,MAAMwB,SAAS,OAAQ,uBAAuB,WACpD,GAAKf,KAAKf,IAAI,uBAGd,OAAOe,KAAKu5E,YAAYv5E,KAAKf,IAAI,YAErCu6E,UAAW1iE,GAAG/V,SAAS,oCAAoC,WACvD,IAAI04E,EAAMC,EAASlsE,EAASmsE,EAAU74E;AAEtC,SADA44E,EAAU15E,KAAKf,IAAI,uCAInBuO,EAAUksE,EAAQz6E,IAAI,WACtB06E,EAAW,GACX74E,EAAO,WACH,OAAQ0M,GACJ,IAAK,KASD,OARAisE,EAAOp4E,EAAAA,QAAO6C,IAAI01E,QAClB94E,EAAM,uBAE+C,MAAjD24E,EAAKjmE,UAAUimE,EAAKvmE,OAAS,EAAGumE,EAAKvmE,SACS,MAA9CpS,EAAI0S,UAAU1S,EAAIoS,OAAS,EAAGpS,EAAIoS,UAElCumE,GAAQ,KAEJE,EAAWF,EAAO34E,GAX/B,GAc2C,MAA9Cd,KAAKf,IAAI,mCAIL06E,EAASzmE,OAAS,GACXymE,OAMnBzU,QAASpuD,GAAG/V,SAASkhC,MAAM,eAC3B43C,cAAe/iE,GAAG/V,SAAS,oCAAoC,WAC3D,IAAI24E;AAEJ,OADAA,EAAU15E,KAAKf,IAAI,qCACZ,EAAA66E,EAAAC,kBAAiB14E,EAAAA,QAAO24E,MAAON,MAE1C35E,KAAM,WAKF,OAHAC,KAAKi6E,eACLj6E,KAAKC,SACLD,KAAK64E,WACE74E,KAAKk6E,yBAGhBC,uBAAwB,WACpB,IAAI/wE,EAAGgxE;AAkBP,OAjBAhxE,EAAIixE,OACJD,EAAkB,CAAC,MAAO,OAAQ,UAClChxE,EAAEkxE,iBAAmB,EACrBlxE,EAAEyW,UAAU06D,UAAS,SAAUpzD,EAAGqzD,EAAKxpC,GACnC,IAAI/kC;AACJ,GAAMA,EAAM+kC,EAAStmC,OAAO/B,EAAQmC,KAAKsvE,EAAiBnuE,GAAO,GAGjE,OAAQ7C,EAAEkxE,kBAAoB,KAElClxE,EAAEyW,UAAU46D,cAAa,SAAUtzD,EAAGqzD,EAAKxpC,GACvC,IAAI/kC;AACJ,GAAMA,EAAM+kC,EAAStmC,OAAO/B,EAAQmC,KAAKsvE,EAAiBnuE,GAAO,GAGjE,OAAQ7C,EAAEkxE,kBAAoB,KAG9Bh0E,OAAOo0E,iBACNp0E,OAAOo0E,eAAiB,WACrB,GAAItxE,EAAEkxE,iBACF,OAAO,KAKvBL,aAAc,WAAY,IAAAn1E,EAAA9E;AAQtB,MAPuB,oBAAZ4xC,SAAuC,OAAZA,UAClCtrC,OAAOq0E,QAAU,SAACj+D,GACd,GAAIA,EAAMlX,SAAWc,OACjB,OAAOxB,EAAK81E,aAIjB/6D,SAASg7D,iBACZ,eACA,WACI,OAAOh7D,SAASg7D,iBACZ,UACA,WACI,OAAO/1E,EAAK81E,cAEhB,MAGR,IAGRA,SAAU,WAAY,IACLh7E,EADKiX,EAAA7W;AAYlB,OAVAJ,EAAUI,KAAKf,IAAI,YAEPA,IAAI,mBACZW,EAAQX,IAAI,+BACZqS,SAAS1R,EAAQX,IAAI,qBAAuBW,EAAQX,IAAI,+BAExDuJ,SAASuB,SAEb/J,KAAKk6E,wBAEDl6E,KAAKf,IAAI,iBAAiB67E,kBAAkB,IAC5C1zE,QAAQ2zE,IAAI,wCACZ/6E,KAAKmC,IAAI,sBAAsB,GACrBnC,KAAKf,IAAI,iBAAiB+7E,UACrB/1E,MACX,WAGI,OAFAmC,QAAQ2zE,IAAI,wCACZlkE,EAAK1U,IAAI,sBAAsB,GACxB0U,EAAK5X,IAAI,iBAAiBg8E,aAErC,SAACt5E,GAEG,OADA,EAAAu5E,EAAAC,kBAAiBx5E,GACVkV,EAAK1U,IAAI,sBAAsB,QAI9CnC,KAAKf,IAAI,iBAAiBg8E,UACnBj7E,KAAKf,IAAI,WAAWg8E,YAGnCG,aAAc77E,MAAMwB,SAAS,2BAA2B,WACpD,GAAKf,KAAKf,IAAI,2BAGd,MAA6D,kBAAzDe,KAAKf,IAAI,2BAA2BuU,UAAU,EAAG,OAKzD6nE,YAAa97E,MAAMwB,SAAS,2BAA2B,WACnD,GAAKf,KAAKf,IAAI,2BAGd,SACIe,KAAKf,IAAI,4BACgD,kBAAzDe,KAAKf,IAAI,2BAA2BuU,UAAU,EAAG,QAMzD8nE,UAAWxkE,GAAG/V,SAAS,6BAA6B,WAChD,IAAIw6E,EAAKC;AAiBT,OAfAA,EAAU,GACC,OAFXD,EAAMv7E,KAAKf,IAAI,+BAEIs8E,EAAIroE,OAAS,GACR,cAAhBqoE,EAAI,GAAG1uE,OACP0uE,EAAI,GAAGhqD,MAAQgqD,EAAI,GAAGz6E,KAGtB06E,EADAD,EAAI,GAAGhqD,MACGlwB,EAAAA,QAAO6C,IAAI0D,kBAAoB,IAAM2zE,EAAI,GAAGhqD,MAC/CgqD,EAAI,GAAGxuD,KACJwuD,EAAI,GAAGxuD,KAEP,2BAGdyuD,EAAU,0BAEPj8E,MAAMua,OAAOiH,SAAS,wBAA0By6D,EAAU,QAErEjhC,QAAS,CACLkhC,WAAY,SAAUC,EAAM/hD,GAAQ,IAAAlW,EAAAzjB;AAChC,GAAoB,eAAhB25B,EAAOjvB,KAGP,OAFA1K,KAAKmC,IAAI,QAAS,MAEX5C,MAAMkD,IAAI8F,OAAM,WACnB,OAAOkb,EAAKxkB,IAAI,UAAU08E,aAAahiD,EAAOt0B,QAC/C,MAGXu2E,cAAe,WAEX,OADA57E,KAAKq0D,eAAe,gBACb,GAEXwnB,cAAe,WASX,OAPQ77E,KAAKf,IAAI,WAEb+H,aAAaM,QAAQ,UAAW,QAEhCN,aAAaM,QAAQ,UAAW,aAEpCtH,KAAKq0D,eAAe,YACb,GAEXynB,gBAAiB,WAEb,OADA97E,KAAKq0D,eAAe,kBACb,GAEX0nB,eAAgB,WAGZ,OAFA/7E,KAAKmC,IAAI,iBAAiB,GAC1BnC,KAAKq0D,eAAe,iBACb,GAEX2nB,kBAAmB,WACf,OAAOh8E,KAAKmC,IAAI,4BAA4B,IAEhD4vE,WAAY,SAAUrwC,GAClB,OAAI5qB,GAAGhU,QAAQ4+B,GACPA,EAAKxuB,OAAS,EACPlT,KAAKi8E,kBAAkBv6C,EAAK,GAAIA,EAAK,IAErC1hC,KAAKi8E,kBAAkBv6C,EAAK,IAGhC1hC,KAAKi8E,kBAAkBv6C,IAGtC6jC,kBAAmB,WACf,OAAOvlE,KAAKi8E,kBAAkB,WAElCC,iBAAkB,SAAUnwC,EAAIpnB,GAC5B,OAAO3kB,KAAKi8E,kBAAkBlwC,EAAIpnB,IAEtCw3D,UAAW,SAAUxiD,GACjB,MAAe,UAAXA,EACO35B,KAAKf,IAAI,OAAOm9E,QACL,UAAXziD,EACA35B,KAAKf,IAAI,OAAOkD,IAAI,kBAAkB,QAD1C,GAIXk6E,UAAW,WAGP,OAFAr8E,KAAKmC,IAAI,sBAAsB,GAC/BnC,KAAKi8E,kBAAkB,SAChB18E,MAAMkD,IAAI8F,MACbvI,MACA,WACI,OAAOwI,SAASuB,WAEpB,MAGRuyE,gBAAiB,WACb,OAAOt8E,KAAKf,IAAI,OAAOkD,IAAI,qBAAqB,IAEpDo6E,oBAAqB,WAEjB,OADAv8E,KAAKmC,IAAI,qBAAqB,GACvBnC,KAAKmC,IAAI,sBAAsB,IAE1Cq6E,aAAc,WAAY,IAAAhgD,EAAAx8B;AAetB,OAbAA,KAAKmC,IAAI,gBAAgB,GAClBnC,KAAKwhC,UAAUwiB,MAAM,CACxBljD,IAAK,YACLG,KAAM,CACFyJ,KAAM,WACN8C,QAASxN,KAAKf,IAAI,4CAClB2nB,QAAS5mB,KAAKf,IAAI,iBAClBstC,MACI,mBAAqBvsC,KAAKf,IAAI,4CAClCw9E,OAAQz8E,KAAKf,IAAI,8BAErB4B,OAAQ,SAEAoE,MAAK,SAACy3E,GACd,OAAkB,MAAdA,EAAK/6E,OACL66B,EAAKr6B,IAAI,cAAc,GACvBq6B,EAAKr6B,IAAI,gBAAgB,GAClBq6B,EAAKr6B,IAAI,QAASu6E,EAAKx6E,aAE9Bs6B,EAAKr6B,IAAI,sBAAsB,GAC/Bq6B,EAAKr6B,IAAI,gBAAgB,GAClBq6B,EAAKr6B,IAAI,gBAAiB,WAI7Cw6E,gBAAiB,WAEb,OADA38E,KAAK04B,KAAK,iBACH14B,KAAKmC,IAAI,QAAS,OAE7B24C,cAAe,WACX,IAAI8hC;AAGJ,GAFAA,EAAar9E,MAAAkZ,SAASzY,MAAM0Y,OAAO,0BACvB1Y,KAAKf,IAAI,2BACP6C,SAAS,iBAEnB,OADQvC,MAAAkZ,SAASzY,MAAM0Y,OAAO,SAAWkkE,EAAW39E,IAAI,qBAC3C+7E,WAGrB6B,eAAgB,SAAUrwC,GAAM,IAAA9P,EAAA18B;AAU5B,OATA6P,OAAO2B,OAAOg7B,GACdxlC,aAAY,KAAWwlC,EAGvBxsC,KAAKwhC,UAAUwiB,MAAM,CACjBljD,IAAK,wBAA0B0rC,EAC/B3rC,OAAQ,SAGLb,KAAK44E,iBAAiB/nD,QAAQ5rB,MAAK,WACtC,OAAQy3B,EAAK/8B,KAAK6R,OAASg7B,MAGnCswC,eAAgB,SAAUx8E,GACtB,OAAON,KAAKmC,IAAI,cAAe7B,IAEnCy8E,cAAe,WACX9sD,UAAU+sD,UAAUC,UAAUj9E,KAAKf,IAAI;AACvC,IAAIU,EAAOK,KAAKf,IAAI;AACpBe,KAAKguB,cAAc3mB,KAAK1H,EAAK2C,EAAE,qDAAsD,CACjF2rB,WAAW,MAIvBivD,UAAWpmE,GAAG/V,SAAS,iBAAiB,WACpC,OAAO+L,IAAI7N,IAAI,gBAGnBk+E,WAAYrmE,GAAG/V,SAAS,kBAAkB,WACtC,OAAO+L,IAAI7N,IAAI,iBAEnBszE,eAAe,EACf6K,WAAY,SACZC,gBAAiB99E,MAAMwB,SAAS,iCAAiC,WAC7D,IAAIkL;AACJ,MAC0D,OAArDA,EAAMjM,KAAKf,IAAI,mCAAqD,MAARgN,GAAuB,MAARA,KAGpFqxE,SAAUxmE,GAAG2V,EAAE,IACf43C,YAAa9kE,MAAMwB,SAAS,QAAQ,WAChC,IAAY0O,EAAO8tE;AACnB,GAAKv9E,KAAKf,IAAI,QAId,OADAs+E,EAAUv9E,KAAKf,IAAI,QAAQ,GACvBuJ,SAASC,KAAK3G,SAAS,UACd0G,SAASC,KAAKgH,MAAM,KAAK0U,QAAO,SAAClO,GACtC,OAAOA,EAAKnU,SAAS,aAEX,GAEF,YAAZy7E,EACO,YAEK,gBAAZA,EACOv9E,KAAKf,IAAI,QAAQ,GAEZ,UAAZs+E,GACA9tE,EAAQjH,SAASC,KAAKgH,MAAM,MACfA,EAAM9G,QAAQ,SAAW,GAE/B40E,KAGfl4E,KAAM9F,MAAMwB,SAAS,2BAA2B,WAC5C,IAAIsE;AAEJ,GADAA,EAAOrF,KAAKf,IAAI,2BAEZ,OAAOoG,EAAKoK,MAAM,QAG1B+tE,0BAA2Bj+E,MAAMwB,SAAS,2BAA2B,WACjE,IAAIsE;AAEJ,MAAa,yBADbA,EAAOrF,KAAKf,IAAI,4BAEL,wBAGPoG,EAAKvD,SAAS,UAAYuD,EAAKvD,SAAS,QACjC,sBAEJ,MAEX27E,WAAYl+E,MAAMwB,SAAS,QAAQ,WAC/B,IAAIgjD,EAAGxgD,EAAMm6E,EAAU/9E,EAAMkN,EAAMxH,EAAMs4E,EAAaluE;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,IAEhCo4E,EAAc39E,KAAKf,IAAI,6CACP,UAAZoG,EAAK,KACmC,MAApCs4E,EAAY,qBACZD,EAAWC,EAAY,qBAAZ,KAC6B,MAAjCA,EAAY,kBACnBD,EAAWC,EAAY,kBAAZ,KAC8B,MAAlCA,EAAY,qBACnBD,EAAWC,EAAY,mBAAZ,OAGfD,GAAwB,UAAZr4E,EAAK,IAAkB0+C,EAAE65B,WAAWF,KAChDn6E,EAAOwgD,EAAE75C,QAAQwzE,GACbn+E,MAAM+gB,UAAU/c,EAAKsJ,OACdtJ,EAAKsJ,KAGJ,gBAAZxH,EAAK,IAELwH,GADA4C,EAAQjH,SAASC,KAAKgH,MAAM,MACfA,EAAM9G,QAAQ,eAAiB,GACxCo7C,EAAE65B,WAAW,eAAiB/wE,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,KAIXw4E,0BAA0B,EAE1BC,eAAgBhnE,GAAG8L,GACf,OACArjB,MAAMukD,SAAS,iCAAiC,WAAY,IACpDC,EAAG1I,EAAkBpyC,EAAM80E,EADyBtgD,EAAAz9B;AAGxD,IADAq7C,EAAUr7C,KAAKf,IAAI,uDACJo8C,EAAU,cACjBxrC,SAASoE,KAAKpE,OAAOwrC,GAAU,QAAU,IACzCpyC,EAAOjJ,KAEP+9E,GAAc,IADdh6B,EAAI/jD,KAAKf,IAAI,cAIPgrE,aAAa,oCACflmB,EAAEkmB,aAAa,yBACflmB,EAAEkmB,aAAa,+BAEf8T,GAAc,GAGd/9E,KAAKf,IAAI,kCAC+C,IAAxDqS,SAAStR,KAAKf,IAAI,mCAClB8+E,GAMA,OAJU/9E,KAAKf,IAAI,aAAasK,KAAK,CACjCzI,IAAK,cACLD,OAAQ,QAEGoE,MACX,SAAUhE,GAEN,OAAOgI,EAAK9G,IAAI,4BAA4B,MAEhD,SAAC2H,GAEG,GAAsB,MAAlBA,EAAOxJ,OAMP,OAJUm9B,EAAKx+B,IAAI,aAAasK,KAAK,CACjCzI,IAAK,gBACLD,OAAQ,QAEGoE,MAAK,SAAChE,GACjB,GAAuB,SAAnBA,EAAI,OAEJ,OADAw8B,EAAKt7B,IAAI,eAAgBlB,GAClBgI,EAAK9G,IAAI,4BAA4B,aAWpF67E,UAAWlnE,GAAG8L,GAAG,QAAQ,WAAY,IAAAwoB,EAAAprC;AACjC,GAAIgH,aAAaR,QAAQ,gBAErB,OADAQ,aAAaG,WAAW,gBACjB2P,GAAGrU,IAAI8F,MACVvI,MACA,WACI,OAAOorC,EAAKnsC,IAAI,eAAemV,UAEnC,QAIZuzD,YAAa7wD,GAAG/V,UAAS,WACrB,GAAIf,KAAKf,IAAI,+CACT,OAAO,KAGfg/E,cAAennE,GAAG/V,UAAS,WACvB,IAAIs6C,EAASppC;AAGb,OAFAopC,EAAUr7C,KAAKf,IAAI,qDACnBgT,EAAOpC,SAASoE,KAAKpE,OAAOwrC,GAAU,QAC/Br7C,KAAKf,IAAI,eAAiBgT,KAErCisE,YAAa,WAMT,OAJUl+E,KAAKf,IAAI,aAAasK,KAAK,CACjCzI,IAAK,cACLD,OAAQ,QAEGoE,MACX,SAACknC,GACG,OAAOA,KAEX,SAACriC,GACG,OAAO,MAInBq0E,UAAWrnE,GAAG/V,SAAS,sBAAuB,mBAAmB,WAAY,IAAA+sC,EAAA9tC;AACzE,QAAKA,KAAKf,IAAI,aAAagrE,aAAa,wBAGjCjqE,KAAKk+E,cAAcj5E,MAAK,SAACm5E,GAC5B,IAAIttC;AAUJ,OATIhD,EAAK7uC,IAAI,aAAagrE,aAAa,qBACnCn5B,EAAO,SAC4B,WAA5BstC,EAAK,gBAAmCtwC,EAAK7uC,IAAI,kBAAoB,IAEpEm/E,GAAStwC,EAAK7uC,IAAI,kBAAoB,EAD9C6xC,EAAO,iBAGAhD,EAAK7uC,IAAI,kBAAoB,IACpC6xC,EAAO,gBAEJA,QAGfutC,0BAA2BvnE,GAAG/V,SAAS,eAAe,WAClD,MAAgC,aAA5Bf,KAAKf,IAAI,gBAGNe,KAAKk+E,cAAcj5E,MAAK,SAACm5E,GAC5B,OAAOA,EAAK,sBAGpBlE,sBAAuB,WACnB,IAAIoE,EAAyBh+E,EAAQi+E;AACrC,SACKv+E,KAAKf,IAAI,wBACS,oBAAZ2yC,SACK,OAAZA,eAIJ2sC,EAAWv+E,KAAKf,IAAI,SAASsC,KAAK,mBACY,IAA7Bg9E,EAAS,mBAG1BD,EAA0Bt+E,KAAKf,IAAI,OAAOu/E,oBAMtCl+E,EAFgC,IAFhCuP,OAAOyuE,GACF5vE,IAAI6vE,EAAS,gBAAiB,QAC9BtqE,KAAKpE,SAAU,SAIpBA,OAAOyuE,GAAyB5vE,IAAI6vE,EAAS,gBAAiB,QAAQ9pE,SAAS5E,UAFtE,YAMTA,OAAOyuE,GACF5vE,IAAI6vE,EAAS,kBAAmB,QAChC9pE,SAAS5E,WAEL,aAIb7P,KAAKmC,IAAI,kBAAkB,GACpBnC,KAAKmC,IAAI,aAAc,CAC1B7B,OAAQA,EACRuxE,QAAS7xE,KAAKf,IAAI,OAAO4yE,UACzB4M,mBAAoB5uE,OAAOyuE,GACtB5vE,IAAI6vE,EAAS,gBAAiB,QAC9BtqE,KAAKpE,SAAU,aAG5B6uE,UAAW5nE,GAAG/V,SAAS,uBAAuB,WAC1C,MAA4B,SAAxBf,KAAKsvD,IAAI8B,WACF/vD,EAAAA,QAAO6C,IAAI01E,QAAU,uCAErBv4E,EAAAA,QAAO6C,IAAI01E,QAAU;eCntBxCl7E,OAAA,wBAAA,CAAA,YAAA,SAAAC,GAGAE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAJ,EAAAO,aAAA;AACA,IAAAy/E,EAAAp/E,MAAAg5E;AACA55E,EAAAO,QAAAy/E;MCA2Bp/E,MAAMg5E,WAAWn5E,OAAO,CAC/CQ,QAASL,MAAMC,OAAOC,UACtBI,MAAON,MAAMC,OAAOC,UACpBm/E,gBAAiB9nE,GAAG/V,SAAS,uBAAuB,WAChD,MAAiD,YAA7Cf,KAAKf,IAAI,mCAKjB4/E,YAAa,GACbC,YAAa,GACbC,UAAWjoE,GAAG/V,SAAS,QAAQ,WAC3B,SAAIf,KAAKf,IAAI,SAAsC,OAA3Be,KAAKf,IAAI,kBAKrC+/E,UAAWloE,GAAG/V,SAAS,QAAQ,WAC3B,SAAIf,KAAKf,IAAI,SAAsC,OAA3Be,KAAKf,IAAI,kBAKrCggF,UAAWnoE,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,8BAElDy1B,WAAW,EACXwqD,UAAWpoE,GAAG/V,SAAS,uBAAuB,WAC1C,OACIf,KAAKH,MAAM0B,KAAK,wBAC6B,YAA7CvB,KAAKf,IAAI,mCAMjBs7C,QAAS,CACL+wB,WAAY,WAEJtrE,KAAKH,MAAM0B,KAAK,wBAC6B,YAA7CvB,KAAKf,IAAI,iCAETkgF,QAAQxoE;;ACnCxB,IACIhO,EAAU,GAAGA,UAUMpJ,MAAMg5E,WAAWn5E,OAAO,CAC3C8N,MAAO3N,MAAMC,OAAOC,UACpBE,KAAMJ,MAAMC,OAAOC,UACnB+hC,UAAWjiC,MAAMC,OAAOC,QAAQ,qBAChC2/E,MAAO7/E,MAAMC,OAAOo9E,aACpByC,uBAAwB,CAAC,UACzB7vB,gBAAiB14C,GAAG2V,EAAE,IACtB4tC,cAAe96D,MAAMV,OAAO+J,OAAO,CAC/B7F,OAAO,IAEXwgD,SAAUhkD,MAAMwB,UAAS,WACrB,IAAIu+E,EAAa38E;AAIjB,OAHAA,EAASnB,EAAAA,QAAUmO,UAAU3P,KAAKf,IAAI,SACtCqgF,EAAct/E,KAAKwhC,UAAU+9C,gBAAgB58E,GAC7C3C,KAAKmC,IAAI,gBAAiBm9E,KACtB38E,IACA3C,KAAKmC,IAAI,YAAY,IACd,MAIfq9E,sBAAuB1oE,GAAGgtC,SAAS,sBAAsB,WACrD,IAAIzmB,EAAKn7B,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,IACnCwqB,EAAMpxB,EAAI4G,GACV3Q,GAAavC,EAAK2C,EAAE+6B,GAAO;AAE/B,OAAOr9B,KAAKmC,IAAI,oBAAqB5C,MAAMua,OAAOiH,SAAS7e,IAG3D,OAAOlC,KAAKmC,IAAI,oBAAqB,SAG7CoB,KAAMhE,MAAMwB,SAASkhC,MAAM,kCAC3By7C,SAAUn+E,MAAMwB,UAAS,WACrB,IAAIwC;AAEJ,GADAA,EAAOvD,KAAKf,IAAI,aAAaiL,QAAQlK,KAAKf,IAAI,QAAQqnC,cAClD/mC,MAAM+gB,UAAU/c,EAAKsJ,MACrB,OAAOtJ,EAAKsJ,QAGpBsN,OAAQ5a,MAAMwB,SAAS,SAAS,WAC5B,IAAI0+E,EAAetlE,EAAQxO,EAAWtB,EAASpB;AAa/C,GAZAA,EAAOjJ,MACP2L,EAAY3L,KAAKf,IAAI,WAEjB0M,EAAYA,EAAU26B,cAE1Bm5C,EAAgBz/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,IAAIogD,EAASz5C,EAAMunC,EAAGvxC,EAAKC,EAAMnN;AAGjC,GAFAuQ,EAAI05B,IAAMt9B,EACV4D,EAAI/L,KAAOoI,EACP8zE,EAAe,CAEf,IAAKjiC,KADLvxC,EAAMwzE,EAAc/zE,GAGhB,GAAoB,WAAhBlJ,EADJyT,EAAOhK,EAAIuxC,KAC+B,MAAVluC,EAAIkuC,GAChC,IAAKkS,KAAWz5C,EAES,WAAjBzT,EADJzD,EAAQkX,EAAKy5C,KAEJpgD,EAAIkuC,GAAGkS,KAIZpgD,EAAIkuC,GAAGkS,GAAW3wD;KAI1BuQ,EAAIkuC,GAAKvnC;AAGbvK,KAAS+zE,IACTnwE,EAAImwE,cAAgBA,EAAc/zE,IAY1C,GAPI4D,EAAImwE,eAAiBnwE,EAAImwE,cAAcvgF,UACS,WAA5CK,MAAM6I,OAAOkH,EAAImwE,cAAcvgF,SAC/B+J,EAAK9G,IAAI,SAAWmN,EAAI05B,IAAK15B,EAAImwE,cAAcvgF,SAE/C+J,EAAK9G,IAAI,SAAWmN,EAAI05B,IAAK15B,EAAImwE,cAAcvgF,YAGjDgN,EAAOoD,EAAI5E,KAAO/B,EAAQmC,KAAK7B,EAAKhK,IAAI,0BAA2BiN,GAAQ,EAC7E,OAAOiO,EAAOjP,KAAKoE,MAG3BtP,KAAK0/E,kBAAkBvlE,GAChBA,KAUXwlE,WAAW,EACXC,gBAAiBrgF,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,KAAK6/E,YAAY5+E,EAAK,GAAG6+E;AAIpC,OAHWvgF,MAAMuD,QAAQ7B,KACrBA,EAAOA,EAAK,IAERA,EAAKU,OACT,IAAK,UACD,OAAO3B,KAAK+/E,kBAAkB9+E,EAAK2B;AACvC,IAAK,eACD,OAAO5C,KAAK6/E,YAAY5+E,EAAKU;AACjC,IAAK,mBACD,OAAO3B,KAAKggF,iBAAiB/+E,EAAKiB;AACtC,QACI,OAAOlC,KAAKmC,IACR,oBACA5C,MAAMua,OAAOiH,SACT,sBAAwB9f,EAAKU,MAAQ,MAAQV,EAAKiB,gBAKtE69E,kBAAmB,SAAUl9E,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,SAACg7E,GACH,IAAIvxE;AAWJ,OAVAA,EAAM,GACNuxE,EAAUr5E,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,SAACi7E,GACH,IAAIxxE;AAWJ,OAVAA,EAAM,GACNwxE,EAASt5E,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,SAACg7E,GACH,IAAIvxE;AASJ,OARAA,EAAM,GACNuxE,EAAUr5E,SAAQ,SAACqP,GACf,OAAQvH,GACJ,UACAuH,EAAKhX,IAAI,gBACT,IACA4Q,OAAOoG,EAAKhX,IAAI,SAASkS,OAAO,QAEjCrM,EAAK3C,IACR,oBACA5C,MAAMua,OAAOiH,SAAS3M,EAAQ,OAAS1F,QAK3DyxE,kBAAmB,KACnBN,YAAa,SAAU3mB,GACnB,OAAQA,GACJ,IAAK,oCACD,OAAOl5D,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,wCAIzD09E,iBAAkB,SAAU9mB,GAGxB,OAAOl5D,KAAKmC,IACR,oBACA5C,MAAMua,OAAOiH,SACT/gB,KAAKf,IAAI,QAAQqD,EAAE,cAAgB42D,EAAK,CACpCh6D,QAAS,wBAA0Bg6D,OAKnDknB,gBAAiBtpE,GAAG2V,EAAE,IACtB4zD,eAAgBvpE,GAAG/V,SAAS,UAAU,WAClC,IAAIyC,EAAO2W,EAAQtH,EAAGE,EAAKutE;AAE3B,GADAnmE,EAASna,KAAKf,IAAI,UAClB,CAIA,IADAqhF,EAAc,GACTztE,EAAI,EAAGE,EAAMoH,EAAOjH,OAAQL,EAAIE,EAAKF,KACtCrP,EAAQ2W,EAAOtH,IACLxE,SAASgqB,SACfioD,EAAYp1E,KAAK1H;AAGzB,OAAO88E,MAEXZ,kBAAmB,SAAUvlE,GAAQ,IAAAtD,EAAA7W;AACjC,OAAOma,EAAOvT,SAAQ,SAACpD,GACnB,IAAIk/C,EAAU69B;AAEd,IADA79B,EAAW7rC,EAAK5X,IAAI,aAAaypB,WAAW7R,EAAK5X,IAAI,SAAS0pB,OAAO,OAAQnlB,EAAMwlC,OAI9EnyB,EAAK5X,IAAI,SAAWuE,EAAMwlC,KAG/B,OAAI0Z,EAASr0C,SAAStE,QAClBw2E,EAAe79B,EAASr0C,SAAStE,OAC7BxK,MAAMuD,QAAQy9E,GACPA,EAAa35E,SAAQ,SAAC87C,GACzB,OAAO7rC,EAAK2pE,mBACRrmE,EACAtD,EAAK5X,IAAI,SAAWuE,EAAMwlC,KAC1BxlC,EAAMwlC,IACN0Z,MAID7rC,EAAK2pE,mBACRrmE,EACAtD,EAAK5X,IAAI,SAAWuE,EAAMwlC,KAC1BxlC,EAAMwlC,IACNu3C,SAhBZ,MAsBRE,2BAA4B,SAAU1hF,EAAOyE,GAAO,IAC5Ck/C,EAAU69B,EADkC98D,EAAAzjB;AAGhD,GADA0iD,EAAW1iD,KAAKf,IAAI,aAAaypB,WAAW1oB,KAAKf,IAAI,SAAS0pB,OAAO,OAAQnlB,GAI7E,OAAIk/C,EAASr0C,SAAStE,QAClBw2E,EAAe79B,EAASr0C,SAAStE,OAC7BxK,MAAMuD,QAAQy9E,GACPA,EAAa35E,SAAQ,SAAC87C,GACzB,OAAOj/B,EAAK+8D,mBAAmB/8D,EAAKxkB,IAAI,UAAWF,EAAOyE,EAAOk/C,MAG9D1iD,KAAKwgF,mBAAmBxgF,KAAKf,IAAI,UAAWF,EAAOyE,EAAO+8E,SAPzE,GAWJC,mBAAoB,SAAUrmE,EAAQpb,EAAOkqB,EAAWy3D,GACpD,IAAIC;AAEJ,GADAA,EAAcxmE,EAAOwO,OAAO,MAAO+3D,GAInC,OAAOnhF,MAAM4C,IAAIw+E,EAAa,SAAU3gF,KAAK4gF,oBAAoB33D,EAAWlqB,KAEhF6hF,oBAAqB,SAAU33D,EAAWlqB,GACtC,IAAIugC;AAGJ,OAFAA,EAAgB,IACFrW,GAAalqB,EACpBugC,GAEXib,QAAS,CACLsmC,eAAgB,SAAUl9E,GACtB,OAAOyD,QAAQ2zE,IAAIp3E,IAEvBm9E,cAAe,SAAUt9E,GACrB,OAAO,GAEXu9E,oBAAqB,WAEjB,OADA/gF,KAAKq0D,eAAe,oBACb,GAEX2sB,iBAAkB,SAAUjiF,EAAOyE,GAE/B,OADAxD,KAAKygF,2BAA2B1hF,EAAOyE,IAChC,GAEXy9E,kBAAmB,SAAUliF,EAAOyE,GAChC,OAAO;;ACnXnB,IACImF,EAAU,GAAGA,UAUSpJ,MAAMg5E,WAAWn5E,OAAO8hF,EAAAA,QAAaC,EAAAA,QAAgB,CAC3EC,YAAa7hF,MAAMC,OAAOo9E,aAC1Bj9E,KAAMJ,MAAMC,OAAOC,UACnB4hF,YAAY,EACZ99E,KAAMhE,MAAMwB,SAASkhC,MAAM,2CAC3BsD,MAAOhmC,MAAMwB,SAASkhC,MAAM,yBAC5BnC,gBAAiBvgC,MAAMwB,SAASkhC,MAAM,uBACtC+O,SAAUl6B,GAAGjY,OAAO+J,OACpBovB,WAAY,WACR,OAAIh4B,KAAKf,IAAI,aACTe,KAAKmC,IAAI,mBAAoBnC,KAAKf,IAAI,YAC/Be,KAAKmC,IAAI,iBAAkBnC,KAAKf,IAAI,WAEpCe,KAAKmC,IACR,WACA2U,GAAGjY,OAAO+J,OAAO,CACbwzB,QAASp8B,KAAKf,IAAI,eAKlCqiF,eAAgB,WAKZ,OAJIthF,KAAKf,IAAI,aACTe,KAAKmC,IAAI,wBAAyBnC,KAAKf,IAAI,0BAE/Ce,KAAKg4B,aACEh4B,KAAKuhF,iBAEhBx5C,KAAM,EACNljB,MAAO,GACP08D,cAAe,WAAY,IACnBC,EACAz9B,EACA5pC,EACA+lB,EACA9D,EACA74B,EACA5D,EACAipC,EACA3/B,EACAw4E,EAVmB38E,EAAA9E;AAYvB,GADAiJ,EAAOjJ,KACFA,KAAKf,IAAI,WAwGd,OArGAm9B,EAAUp8B,KAAKf,IAAI,WACnB8kD,EAAI/jD,KAAKf,IAAI,aACbU,EAAOK,KAAKf,IAAI,QAChBsE,EAAOvD,KAAKf,IAAI,QACZ8kD,EAAE65B,WAAWr6E,KACb4W,EAAS4pC,EAAEr7B,WAAWnlB,GACtBqlC,EAAc5oC,KAAKf,IAAI,eACvBihC,EAAY9D,EAAQ9J,MAAM,SAC1BmvD,EAAiB,CACb/qC,KAAM,CAAC,gBAAiB,WAAY,SACpCtyB,QAAS,CAAC,UAEdo9D,EAAsB,CAClB,aACA,kBACA,mBACA,yBACA,uBACA,uBACA,gBACA,eAEJrnE,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,KAAKo1B,EAAWh0B,GAAQ,GACxD,CACE,GAAIpH,EAAK7F,IAAI,qBAAuB2pC,EAAY9mC,SAAS0B,EAAMqJ,MAC3D;AAEJ,GACMswC,EAAO35C,EAAMD,KAAO,IAAMC,EAAMqJ,KAClClE,EAAQmC,KAAK02E,EAAqBrkC,IAAS,EAE3C;AAEJ,GAA8D,cAA/B,OAAzBM,EAAOj6C,EAAMmH,SAAmB8yC,EAAKl6C,UAAO,GAC9C;AAEJ64B,EAAQlxB,KACJ4L,GAAGjY,OAAO+J,OAAO,CACbpF,MAAOA,EAAMqJ,KACb60E,OAAO,KAInB,GACmB,aAAfl+E,EAAMkH,MACNnL,MAAM+gB,UAAUmhE,EAAej+E,EAAMmH,QAAQpH,OAC/C,CACE,GAAIuB,EAAK7F,IAAI,qBAAuB2pC,EAAY9mC,SAAS0B,EAAMqJ,MAC3D;AAEJ,OAAO40E,EAAej+E,EAAMmH,QAAQpH,MAAMqD,SAAQ,SAAC02B,GAC/C,IAAIqkD,EAAMC,EAAMC;AAMhB,GACMF,EAAOn+E,EAAMmH,QAAQpH,KAAO,IAAM+5B,EACpC30B,EAAQmC,KAAKo1B,EAAWyhD,GAAQ,GAChCh5E,EAAQmC,KAAKo1B,EAAW5C,GAAK,IAC5BymB,EAAE/nB,YAAYz4B,EAAM+5B,IACrBymB,EAAE/nB,YAAYz4B,EAAMC,EAAMmH,QAAQpH,MACpC,CACE,GACMq+E,EAAO,KAAOp+E,EAAMqJ,KACtBlE,EAAQmC,KAAK02E,EAAqBI,IAAS,EAE3C;AAEJ,GACMC,EAAOr+E,EAAMD,KAAO,IAAMC,EAAMqJ,KAClClE,EAAQmC,KAAK02E,EAAqBK,IAAS,EAE3C;AAEJ,OAAOzlD,EAAQlxB,KACX4L,GAAGjY,OAAO+J,OAAO,CACbpF,MAAO85B,EACPokD,OAAO,EACPn+E,KAAMC,EAAMmH,QAAQpH,KACpB2iB,SAAS,cAQ9BkW,EAAQx1B,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,SAAS2wB,aACf/oB,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,SAAS0/B,QAAQ,SAASp+B,OAAO,eAElD8E,EAAKhX,IAAI,QACVgX,EAAK9T,IAAI,MAAO0N,SAAS2/B,MAAM,SAASr+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,SAASkhC,MAAM,WAAav2B,EAAQ,WAGpCoL,GAAGhY,eACNmK,EACAgN,EAAKhX,IAAI,SACT6X,GAAG/V,SAASkhC,MAAM,WAAav2B,EAAQ,gBAhF3CoL,GAAGhY,eACCmK,EACAgN,EAAKhX,IAAI,UACT6X,GAAG/V,SAASkhC,MAAM,WAAav2B,EAAQ,kBAkFvDo2E,MAAOviF,MAAMwB,SAAS,iBAAiB,WACnC,IAAI+gF,EAAO7rE,EAAMunC,EAAGhrC,EAAOyP;AAC3B,GAAIjiB,KAAKf,IAAI,eAAgB,CAgBzB,IAAKu+C,KAfLhrC,EAAQxS,KAAKf,IAAI,SAAS6nB,OAAO,QACjCg7D,EAAQhrE,GAAG2V,EAAE,IACbja,EAAM5L,SAAQ,SAAUqP,GACpB,IAAI7I;AAEJ,OADAA,EAAO6I,EAAKhX,IAAI,QACZ6iF,EAAM10E,GACC00E,EAAM10E,GAAM+K,KAAKuW,WAAWzY,GAE3B6rE,EAAM10E,GAAQ,CAClBA,KAAM6I,EAAKhX,IAAI,QACfkZ,KAAM,CAAClC,OAInBgM,EAAMnL,GAAG2V,EAAE,IACDq1D,EACN7rE,EAAO6rE,EAAMtkC,GACbv7B,EAAIyM,WAAWzY;AAEnB,OAAOgM,MAGf8/D,4BAA6B,SAAUv+E,EAAOzE,GAC1C,IAAIijF,EAA0BC,EAAWC;AACzC,GAAK1+E,KAGDmF,EAAQmC,KAAK9K,KAAKf,IAAI,eAAgBuE,IAAU,GAIvCxD,KAAKf,IAAI,WAAWk9B,SAAS,QAAS34B,GACpCvE,IAAI,uBAsCnB,OAnCA+iF,EAA2BlrE,GAAG2V,EAAE,IAC5BzsB,KAAKf,IAAI,SACTe,KAAKf,IAAI,QACJwQ,MAAM,KACN7I,SAAQ,SAAU4rC,GACf,IAAIloB;AAEJ,OADAA,EAAWkoB,EAAM/iC,MAAM,KAChBuyE,EAAyBtzD,WAAW,CACvClrB,MAAO8mB,EAAS,GAChBvrB,MAAOurB,EAAS,QAIhC23D,EAAYD,EAAyBr5D,OAAO,QAASnlB,GAChDzE,GAKgB,MAAbA,EAAME,KAAeF,EAAME,IAAI,QAC/BF,EAAQA,EAAME,IAAI,OAElBgjF,EACAA,EAAUljF,MAAQA,EAElBijF,EAAyBtzD,WAAW,CAChClrB,MAAOA,EACPzE,MAAOA,KAZXkjF,GACAD,EAAyB3zD,aAAa4zD,GAe9CC,EAAU,GACVF,EAAyBp7E,SAAQ,SAAUqP,GACvC,OAAOisE,EAAQh3E,KAAK+K,EAAKzS,MAAQ,IAAMyS,EAAKlX,UAE5CmjF,EAAQhvE,OAAS,EACVlT,KAAKmC,IAAI,OAAQ+/E,EAAQvkE,KAAK,MAE9B3d,KAAKmC,IAAI,YAAQ,IAGhCo4C,QAAS,CACL4nC,cAAe,SAAUpjF,EAAOkqB,GAC5B,IAAI9E,EAAQ7U,EAAK8yE;AAsBjB,MArBkB,YAAdn5D,GACAjpB,KAAKmC,IAAI,UAAWpD,GAExBiB,KAAK+hF,4BAA4B94D,EAAWlqB,IAC5CqjF,EAAiBpiF,KAAKf,IAAI,WAAWklB,QAAO,SAACA,GACzC,GAAIA,EAAOllB,IAAI,WAAagqB,GAAa9E,EAAOllB,IAAI,YAChD,OAAO,MAGIiU,OAAS,IACxBiR,EAASi+D,EAAenjF,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,IAE5B+5E,iBAAkB,SAAUnwC,EAAIpnB,GAC5B,MAAyB,WAArBplB,MAAM6I,OAAO2jC,GACN/rC,KAAKi8E,kBAAkBlwC,GAEvB/rC,KAAKi8E,kBAAkBlwC,EAAIpnB;;MC5VhCplB,MAAMg5E,WAAWn5E,OAAO,CACtCQ,QAASL,MAAMC,OAAOC,UACtB+hC,UAAWjiC,MAAMC,OAAOC,QAAQ,qBAChC4iF,oBAAqB9iF,MAAMC,OAAOC,UAClC2hF,YAAa7hF,MAAMC,OAAOo9E,aAC1Bj9E,KAAMJ,MAAMC,OAAOC,UACnB6iF,eAAgB/iF,MAAMwB,SAClB,gCACA,+BACA,sBACA,WACI,IAAIwhF,EAAWC,EAAUC;AAIzB,OAHAD,EAAWxiF,KAAKwhC,UAAUkhD,eAC1BH,EAAYviF,KAAKf,IAAI,iCACrBwjF,EAAWziF,KAAKf,IAAI,gCAChBsjF,EACOC,EAAW,IAAMD,EAAY,IAC7BE,EACAD,EAAW,IAAMC,EAAW,IAE5BD,EAAW;;MCjBhBjjF,MAAMg5E,WAAWn5E,OAAO,CACtCQ,QAASL,MAAMC,OAAOC,QAAQ,WAC9B2hF,YAAa7hF,MAAMC,OAAOo9E,aAC1B+F,eAAe,EACf31C,oBAAqBztC,MAAMC,OAAOC,UAClCmjF,iBAAkBrjF,MAAMC,OAAOC,UAC/Bi5E,QAASn5E,MAAMC,OAAOC,UACtB+hC,UAAWjiC,MAAMC,OAAOC,QAAQ,qBAChCijB,IAAKnjB,MAAMC,OAAOC,UAClBE,KAAMJ,MAAMC,OAAOC,UACnB6vD,IAAK/vD,MAAMC,OAAOC,UAClBojF,mBAAmB,EACnB9iF,KAAM,WAKF,GAJIC,KAAKf,IAAI,oCACTe,KAAKi8E,kBAAkB,YAE3Bj8E,KAAKC,SACDD,KAAKf,IAAI,OAAO6jF,MAChB,OAAO9iF,KAAK+iF,0BAGpBC,OAAQlsE,GAAG/V,UAAS,WAChB,MAAqB,SAAjBM,EAAAA,QAAO24E,SAKfiJ,QAAS1jF,MAAMwB,UAAS,WACpB,MAAqB,UAAjBM,EAAAA,QAAO24E,MACA34E,EAAAA,QAAO6C,IAAI01E,QAAU,8BACJ,SAAjBv4E,EAAAA,QAAO24E,MACP34E,EAAAA,QAAO6C,IAAI01E,QAAU,6BAEzBv4E,EAAAA,QAAO6C,IAAI01E,QAAU,oCAEhCsJ,aAAc3jF,MAAMwB,UAAS,WACzB,OAAOM,EAAAA,QAAO6C,IAAIi/E,gBAEtBC,YAAa7jF,MAAMwB,UAAS,WACxB,OAAOM,EAAAA,QAAO6C,IAAIm/E,eAEtBpK,cAAeniE,GAAG/V,UAAS,WACvB,OAAOf,KAAKf,IAAI,gCAEpBqkF,UAAW/jF,MAAMwB,SAAS,aAAa,WACnC,OAAIf,KAAKf,IAAI,aAAa0mC,UAAU,CAAC,gBAC1B,iBAEA,wBAGf49C,iBAAkBhkF,MAAMwB,SAAS,gBAAgB,WAC7C,OAAIf,KAAKf,IAAI,iBAGQ,YAAjBoC,EAAAA,QAAO24E,SAKfwJ,kBAAmBjkF,MAAMqjB,GAAG,QAAQ,WAChC,IAAQjN;AAGR,OADAA,EADK3V,KAAKf,IAAI,uBACAwkF,mBACPzjF,KAAKmC,IAAI,iBAAkBwT,MAEtC+tE,sBAAuBnkF,MAAMukD,SAAS,kBAAkB,WACpD,IAAI6/B,EAAIhuE;AAGR,GAFAA,EAAW3V,KAAKf,IAAI,kBACpB0kF,EAAK3jF,KAAKf,IAAI,uBACG,KAAb0W,EACA,OAAOguE,EAAGC,iBAAiB,OAGnCC,eAAgBtkF,MAAMwB,UAAS,WAC3B,IAAI+iF,EAASx0E,EAAKy0E;AAElB,GADAD,EAAUhtE,GAAG2V,EAAE,IACQ,oBAAZmlB,SAAuC,OAAZA,QAClC,IAAKtiC,KAAOjO,EAAAA,QAAO2iF,aACfD,EAAK,IAAInsB,OAAOv2D,EAAAA,QAAO2iF,aAAa10E,GAAK20E,kBAAmB,KACxDh0D,UAAU2lC,UAAU7/C,MAAMguE,IAC1BD,EAAQp1D,WAAWrtB,EAAAA,QAAO2iF,aAAa10E;AAInD,OAAOw0E,KAEXI,UAAW3kF,MAAMwB,UAAS,WACtB,MAA0B,oBAAZ6wC,SAAuC,OAAZA,WAE7CuyC,YAAa5kF,MAAMwB,UAAS,WACxB,OAAOf,KAAKf,IAAI,QAAQqD,EAAE,sBAE9BygF,uBAAwB,WACpB,IAAIqB,EAAMn7E,EAAMo7E;AAahB,OAZAp7E,EAAOjJ,KACPqkF,EAAM,SAAUl4C,GACA,IAARA,GACAljC,EAAK9G,IAAI,qBAAqB,GAEtB,IAARgqC,GACAljC,EAAK9G,IAAI,qBAAqB,IAGtCiiF,EAAO,SAAUj4C,GACbljC,EAAK9G,IAAI,qBAAqB,IAE3BmE,OAAOsrC,QAAQ0yC,KAAKD,EAAKD,EAAM,OAAQ,oBAAqB,KAEvEG,oBAAqBhlF,MAAMwB,SAAS,UAAU,WAE1C,OAAIf,KAAKf,IAAI,UACF,+BAIK,QAFNqH,OAAO2pB,UAAUu0D,cAAgBl+E,OAAO2pB,UAAUkmC,UAC1C3iD,UAAU,EAAG,GAAG/G,cAEvB,+DAEJ,sCAEX8tC,QAAS,CACLkqC,cAAe,WACX,IAAI3jF,EAAMd,KAAKf,IAAI;AACnBqH,OAAOmzC,KAAK34C,EAAK,YAErB4jF,aAAc,WAAY,IAClBzjF,EAAM0iF,EAAI16E,EADQnE,EAAA9E;AAMtB,OAJAA,KAAKf,IAAI,WAAW0lF,YACpB17E,EAAOjJ,KACP2jF,EAAK3jF,KAAKf,IAAI,wBACdgC,EAAOjB,KAAK4kF,cAAc,iBAAkB,aAClCC,gBAAmB5jF,EAAKuyD,UAKlCxzD,KAAKmC,IAAI,oBAAoB,GAC7BnC,KAAKmC,IAAI,eAAgB,MAClBnC,KAAKf,IAAI,WACXylF,aACG,+BACAzjF,EAAK4jF,eAAe5xD,OACpBhyB,EAAKuyD,SAASvgC,QAEjBhuB,MAAK,WAGF,OAFAgE,EAAK9G,IAAI,oBAAoB,GAC7BwhF,EAAGC,iBAAiB3iF,EAAK4jF,gBAClB//E,EAAK7F,IAAI,WAAWmV,WAE9B69C,OAAM,SAAUyqB,GACb,IAAI/6E;AAMJ,GAJI+6E,EAAKoI,eACLpI,EAAOA,EAAKoI,cAEhB77E,EAAK9G,IAAI,oBAAoB,GACxBu6E,EAUL,OADA/6E,EAAQ+6E,EAAK/6E,MACRoS,MAAMpS,GAGAsH,EAAK9G,IAAI,eAAgB8G,EAAKhK,IAAI,QAAQqD,EAAE,SAAWX,IAFvDsH,EAAK9G,IAAI,eAAgBu6E,EAAKh8E;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,KAwCrC4iF,cAAe,WACX,OAAO/kF,KAAKmC,IAAI,iBAAkBnC,KAAKf,IAAI,kBAAkBwN,gBAEjEu4E,SAAU,SAAUjmF,EAAOooB,GACvB,IAAI89D,EAAQC,EAAUr+E,EAAKs+E;AAM3B,GALAF,EAAS,MAAM1jF,KAAK0uB,UAAUm1D,UAElB,cADZv+E,EAAMsgB,EAAEk+D,cAAcx+E,WACkC,IAAvB7G,KAAKf,IAAI,WACtCe,KAAKq0D,eAAe,UAEnBxtD,KAAOA,EAAIqM,OAAS,GAAzB,CAIA,GADAiyE,EAAWh+D,EAAEk+D,cAAcF,SACvBt+E,GAAO,KAAOA,GAAO,IACrBq+E,GAAYC;IACT,CAAA,KAAIt+E,GAAO,KAAOA,GAAO,MAASs+E,GAAYF,EAGjD,OAAO;AAFPC,EAAWC,EAKf,OADAnlF,KAAKmC,IAAI,SAAU+iF,IACZ;eCjNnBxmF,OAAA,yBAAA,CAAA,YAAA,SAAAC,GAGAE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAJ,EAAAO,aAAA;AACA,IAAAy/E,EAAAp/E,MAAAg5E;AACA55E,EAAAO,QAAAy/E;MCI4Bp/E,MAAMg5E,WAAWn5E,OAAOkmF,EAAAA,QAAW,CAC3D9jD,UAAWjiC,MAAMC,OAAOC,QAAQ,qBAChC8lF,qBAAsBhmF,MAAMC,OAAOo9E,WAAW,+BAC9C4I,mBAAoBjmF,MAAMC,OAAOo9E,WAAW,6BAC5C6I,sBAAuBlmF,MAAMC,OAAOo9E,WAAW,eAC/C8I,eAAgBnmF,MAAMC,OAAOo9E,WAAW,yBACxC+I,mBAAoBpmF,MAAMC,OAAOo9E,WAAW,YAC5C15B,UAAW3jD,MAAMC,OAAOC,UACxBE,KAAMJ,MAAMC,OAAOC,UACnBmmF,IAAKrmF,MAAMC,OAAOC,UAClBomF,SAAUtmF,MAAMwB,SAASkhC,MAAM,+BAC/B56B,KAAM9H,MAAMwB,SAASkhC,MAAM,8BAC3B6jD,iBAAkB,KAClBxE,eAAgB,WAEZ,OADAthF,KAAKC,SACED,KAAKf,IAAI,sBAAsBkD,IAAI,eAAgB,YAE9D4jF,aAAcxmF,MAAMqjB,GAChB,OACArjB,MAAMukD,SAAS,eAAe,WAC1B,IAAInkD,EAAMomF;AAaV,OAZApmF,EAAOK,KAAKf,IAAI,QAChB8mF,EAAe,WACX,OAAQ/lF,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,eAAgB4jF,OAGlEC,eAAgBzmF,MAAMwB,SAASokE,MAAM,cAAe,GACpD8gB,UAAW1mF,MAAMwB,UAAS,WACtB,IAAIpB;AAEJ,OADAA,EAAOK,KAAKf,IAAI,QACT6X,GAAG2V,EAAE,CACR9sB,EAAK2C,EAAE,kBACP3C,EAAK2C,EAAE,kBAEP3C,EAAK2C,EAAE,uBAGf4jF,aAAc3mF,MAAMqjB,GAChB,OACArjB,MAAMukD,SAAS,eAAe,WAC1B,IAAI5gB,EAAarwB,EAAGnH,EAAOqH,EAAKg1B,EAAMk+C,EAAWhkE;AAIjD,IAHAihB,EAAcljC,KAAKf,IAAI,eACvBgnF,EAAYjmF,KAAKf,IAAI,aACrBgjB,EAAMnL,GAAG2V,EAAE,IACN/gB,EAAQmH,EAAI,EAAGE,EAAMkzE,EAAU/yE,OAAQL,EAAIE,EAAKrH,IAAUmH,EAC3Dk1B,EAAOk+C,EAAUv6E,GACjBuW,EAAIyM,WACA5X,GAAGjY,OAAO+J,OAAO,CACbiE,KAAMk7B,EACNlrB,OAAQqmB,EAAc,GAAKx3B,EAC3BqxB,KAAMmG,EAAc,EAAIx3B,EACxBy6E,IAAKz6E,EAAQ;AAIzB,OAAO1L,KAAKf,IAAI,sBAAsBkD,IAAI,QAAS8f,OAG3D1W,SAAUuL,GAAG2V,EAAE,IACf25D,YAAa7mF,MAAMqjB,GACf,OACArjB,MAAMukD,SAAS,mBAAoB,mBAAmB,WAAY,IAC1D8hC,EAAKjhE,EADqD7f,EAAA9E;AAE9D,GAAKA,KAAKf,IAAI,oBAWd,OARA2mF,EAAM5lF,KAAKf,IAAI,OACf0lB,EAAS,CACL1jB,KAAM,CACFuM,QAASxN,KAAKf,IAAI,oBAClB8vB,OAAQ/uB,KAAKf,IAAI,mBACjButC,KAAM38B,OAAO2B,WAGdxR,KAAKf,IAAI,aACXA,IAAI,WAAY0lB,GAChB1f,MAAK,SAACsG,GAWH,OAVAA,EAAWA,EAASsW,KAAI,SAAU5L,GAC9B,OAAIA,EAAKwzC,OAAwC,UAA/BxzC,EAAKwzC,MAAMj2C,UAAU,EAAG,GAC9ByC,EAAKqpD,KAAOrpD,EAAKwzC,MAAMj2C,UAAU,IAEzCyC,EAAKwzC,MAAQxzC,EAAKwzC,MACZm8B,EAAI9kF,IAAI,mBAAqBmV,EAAKwzC,YAClC,EACClqD,MAAMV,OAAO+J,OAAOqN,OAG5BnR,EAAK3C,IAAI,WAAY2U,GAAG2V,EAAElhB,WAIjD23B,YAAa3jC,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,KAAKi8E,kBAAkB,sBAElCoK,SAAU,WAAY,IACdC,EAAmCR,EAAkB78E,EADvC4N,EAAA7W;AAGlB,OADcA,KAAKf,IAAI,gBAEnB,KAAK,EAGD,OAFAgK,EAAOjJ,MACPsmF,EAAuBtmF,KAAKf,IAAI,yBACJ2W,WAAW3Q,MAAK,WACxC,IAAIo4B,EAAK17B,EAAOgB;AAIhB,IAAKhB,KAHL2kF,EAAqBC,sBAErBlpD,GAAM,EADN16B,EAAS2jF,EAAqBrnF,IAAI,UAG1B0D,EAAO6jF,eAAe7kF,KACjB07B,IACDA,GAAM;AAIlB,IAAKA,EACD,OAAOp0B,EAAKgzE,kBAAkB;AAK1C,KAAK,EAED,IADA6J,EAAmB9lF,KAAKf,IAAI,wCACPiU,OAAS,EAC1B;AAYJ,OAVAlT,KAAKmC,IAAI,mBAAoB2jF,GAK7B9lF,KAAKf,IAAI,kBACJwnF,sBACAxhF,MAAK,SAACyhF,GACH,OAAO7vE,EAAK6hB,KAAK,kBAAmBguD,MAErC1mF,KAAKi8E,kBAAkB;AAClC,KAAK,EACD,OAAOj8E,KAAKf,IAAI,kBAAkB0nF,mBAG9CC,gBAAiB,SAAUF,GACvB,OAAO1mF,KAAKf,IAAI,aAAasK,KAAK,CAC9BzI,IAAK,YACLD,OAAQ,OACRI,KAAM,CACF4lF,UAAWH,EAAeG,UAC1Bh6E,KAAM7M,KAAKf,IAAI,oBACf6nF,UAAW9mF,KAAKf,IAAI,sBACpB0W,SAAU+wE,EAAe/wE,SACzBnI,QAASxN,KAAKf,IAAI,oBAClB8nF,MAAO/mF,KAAKf,IAAI,kBAChB+nF,qBACIhnF,KAAKf,IAAI,sBAAwB,IAAMe,KAAKf,IAAI,qBACpDgoF,sBAAuBjnF,KAAKf,IAAI,kBAChCioF,sBAAuBlnF,KAAKf,IAAI,kBAChCkoF,gBAAiBnnF,KAAKf,IAAI;;ACtP9C,IACI0J,EAAU,GAAGA,UAQcpJ,MAAMg5E,WAAWn5E,OAAOw8C,EAAAA,QAAW,CAC9DwrC,iBAAkB,QAClBxB,IAAKrmF,MAAMC,OAAOC,UAClBE,KAAMJ,MAAMC,OAAOC,UACnB4nF,YAAa,aACbC,UAAW,aACXR,UAAWhwE,GAAG/V,UAAS,WACnB,GACIf,KAAKf,IAAI,gBACTe,KAAKf,IAAI,cACT4Q,SAASsB,OAAO,eAAiBnR,KAAKf,IAAI,gBAC1C4Q,SAASsB,OAAO,eAAiBnR,KAAKf,IAAI,aAE1C,MAAO,cAGf2pC,YAAa,CAAC,UAAW,SAAU,SAAU,QAAS,QAAS,QAC/D2+C,WAAYzwE,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,OAAO2pB,UAAUu0D,cAAgBl+E,OAAO2pB,UAAUkmC,UAC1C3iD,UAAU,EAAG,GAAG/G,iBAE9Be,EAAU,MAEV7E,EAAQmC,KAAK9K,KAAKf,IAAI,aAAaqzB,MAAM,MAAO9kB,IAAY,IAC5D,OAAOxN,KAAKmC,IAAI,gBAAiBqL,MAMrDg6E,YAAa,CACT/E,SAAU,CACNn0E,WAAW,GAEfi+B,MAAO,CACHj+B,WAAW,EACXm5E,cAAc,EACdl7C,OAAO,EACPwmB,UAAW,IAEf2mB,QAAS,CACLprE,WAAW,GAEfy4E,MAAO,CACHz4E,WAAW,GAEfo5E,MAAO,CACHp5E,WAAW,GAEfd,QAAS,CACLc,WAAW,GAEfklD,SAAU,CACNllD,WAAW,EACXwkD,UAAW,IAGnB60B,gBAAiBpoF,MAAMV,OAAO+J,SAC9BkiB,UAAW,CACP,CACInnB,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,WAOf6oF,kBAAkB,EAClBxoD,OAAQ7/B,MAAMwB,SAASkhC,MAAM,SAC7B4lD,aAAc/wE,GAAGgtC,SAAS,eAAe,WACrC,IAAIgkC,EACAC,EACAx7C,EAEAy7C,EACAC,EACAC,EACAC;AAGJ,GAFAF,EAAY,CAAC,QAAS,QAAS,UAAW,WAE7B,OADb17C,EAAQvsC,KAAKf,IAAI,oBAIjBkpF,EAAiB57C,EAAM98B,MAAM,MACVyD,OAAS,GAY5B,OAPA60E,GADAG,GADAJ,EAASK,EAAe,IACC14E,MAAM,MACA,GAG3Bu4E,EAFgBE,EAAgBh1E,OAAS,EAE5BvK,EAAQmC,KAAKm9E,EAAWF,IAAiB,EAAI,GAAKD,EAElD,GAEV9nF,KAAKmC,IAAI,eAAgB6lF,MAEpC3tB,cAAevjD,GAAG2V,EAAE,CAChB27D,kBAAkB,EAClBrlF,OAAO,IAEXslF,kBAAkB,EAClB7V,eAAgBjzE,MAAMwB,UAAS,WAC3B,OAAOf,KAAKf,IAAI,QAAQqD,EAAE,mBAE9Bm9E,cAAe,CACX6I,MAAO,CACHjsE,SAAU,8BACVksE,YAAY,GAEhBC,MAAO,CACHnsE,SAAU,6BACVksE,YAAY,IAGpBE,UAAWlpF,MAAMwB,UAAS,WAGtB,OADMf,KAAKf,IAAI,OACP4Q,OAAO2B,UACX,IAAK,KACD,OAAOnQ,EAAAA,QAAOqnF,mBAAmBC;AACrC,IAAK,KACL,IAAK,KACD,OAAOtnF,EAAAA,QAAOqnF,mBAAmBE;AACrC,QACI,OAAOvnF,EAAAA,QAAOqnF,mBAAmBG,OAG7CtC,oBAAqB,WACjB,IAAI/iF,EAAO45C;AAGX,IAAK55C,KADL45C,EAAU,GADIp9C,KAAKf,IAAI,eAGnBm+C,EAAQlyC,KAAKlL,KAAK8oF,mBAAmBtlF;AAEzC,OAAO45C,GAEX0rC,mBAAoB,SAAUtlF,GAC1B,IAAI7B,EAAO67C,EAAGzf;AASd,IAAKyf,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,OAHAo8B,EAAOp8B,EAAM67C,GACbx9C,KAAKmC,IAAI,mBAAqBqB,EAAQ,OAAO,QAC7CxD,KAAKmC,IAAI,mBAAqBqB,EAAQ,SAAUu6B,IAIxDwc,QAAS,CACLwuC,SAAU,WAQN,OAPA/oF,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,aAGtCw+B,OAAQ,SAAUn9B,EAAOzE,GAAO,IAAA+F,EAAA9E;AAM5B,OAJOA,KACGA,KAAK4V,SAAS,CAACpS,IAGVyB,MAAK,WAChB,OAAOH,EAAKgkF,mBAAmBtlF,OAGvCwlF,UAAW,SAAUxlF,GACjB,OAAOxD,KAAKmC,IAAIqB,EAAQ,WAAW,IAEvC6xB,cAAe,SAAU7xB,GAAO,IAAAqT,EAAA7W;AAK5B,OAHAA,KAAKmC,IAAI,cAAenC,KAAKf,IAAI,eAAewN,eAChDzM,KAAKmC,IAAIqB,EAAQ,WAAW,GAClBxD,KAAK4V,SAAS,CAACpS,IACVyB,MAAK,WAChB,OAAO4R,EAAKiyE,mBAAmBtlF,OAGvCylF,iBAAkB,SAAUzlF,GAAO,IAAAigB,EAAAzjB;AAI/B,OAFAA,KAAKmC,IAAIqB,EAAQ,WAAW,GAClBxD,KAAK4V,SAAS,CAACpS,IACVyB,MAAK,WAChB,OAAOwe,EAAKqlE,mBAAmBtlF,OAGvC0lF,YAAa,SAAU1lF,GACnB,GAAIxD,KAAKf,IAAI,mBAAqBuE,GAC9B,OAAOxD,KAAKmC,IAAI,mBAAqBqB,EAAQ,UAAU;;;MCvO3CjE,MAAMg5E,WAAWn5E,OAAO,CAChDumF,mBAAoBpmF,MAAMC,OAAOo9E,WAAW,YAC5CkJ,iBAAkBvmF,MAAMwB,SAASkhC,MAAM,uCACvC12B,SAAUhM,MAAMwB,SAASkhC,MAAM,+BAC/BknD,eAAgB5pF,MAAMqjB,GAClB,OACArjB,MAAMukD,SAAS,6BAA6B,WACxC,IAAIslC,EAAUv2E,EAAGE,EAAKs2E,EAAOC,EAASC,EAAcj6C;AAGpD,IADAA,EAAM,EACDz8B,EAAI,EAAGE,GAFZw2E,EAAevpF,KAAKf,IAAI,iBAEOiU,OAAQL,EAAIE,EAAKF,IAE5Cu2E,GADAE,EAAUC,EAAa12E,IACJ5T,IAAI,YACvBoqF,EAAQC,EAAQrqF,IAAI,UAAYqqF,EAAQrqF,IAAI,SAC5CqqF,EAAQnnF,IAAI,WAAYknF,GAAS,OAC7BA,IACA/5C,GAAO+5C;AAIf,OADArpF,KAAKmC,IAAI,MAAOmtC,GAAO,OAChBtvC,KAAKmC,IAAI,cAAeinF,OAGvCG,aAAchqF,MAAMwB,SAAS,mBAAoB,YAAY,WACzD,IAAI8R,EAAGE,EAAKu2E,EAASrnE,EAAK6jE;AAI1B,IAHAA,EAAmB9lF,KAAKf,IAAI,oBAE5BgjB,EAAMnL,GAAG2V,EAAE,IACN5Z,EAAI,EAAGE,EAAM+yE,EAAiB5yE,OAAQL,EAAIE,EAAKF,IAChDy2E,EAAUxD,EAAiBjzE,GAC3BoP,EAAIyM,WACA5X,GAAGjY,OAAO+J,OAAO,CACbiE,KAAMy8E,EAAQ58C,OACd28C,MAAOC,EAAQD,MACfD,SAAUE,EAAQF,SAClB7xB,YAAav3D,KAAKwpF,eAAeF,EAAQG;AAIrD,OAAOxnE,KAEXunE,eAAgB,SAAUC,GACtB,OAAQA,GACJ,IAAK,UACD,MAAO;AACX,IAAK,aACD,MAAO;AACX,QACI,MAAO;;MChDElqF,MAAMg5E,WAAWn5E,OAAO,CAC7CumF,mBAAoBpmF,MAAMC,OAAOo9E,WAAW,oBAC5CwE,YAAa7hF,MAAMC,OAAOo9E,aAC1BiJ,SAAUtmF,MAAMwB,SAASkhC,MAAM,+BAC/B6jD,iBAAkBvmF,MAAMwB,SAASkhC,MAAM,uCACvCT,UAAWjiC,MAAMC,OAAOC,QAAQ,qBAChCutC,oBAAqBztC,MAAMC,OAAOC,UAClCmjF,iBAAkBrjF,MAAMC,OAAOC,UAC/Bi5E,QAASn5E,MAAMC,OAAOC,UACtBE,KAAMJ,MAAMC,OAAOC,UACnBs9B,MAAM,EACNy2B,SAAU,KACV5zD,QAASL,MAAMC,OAAOC,UACtBknF,eAAgB,WAAY,IACpB+C,EAAiC/zE,EADb7Q,EAAA9E;AAWxB,OATA2V,EAAW3V,KAAKf,IAAI,YACTe,KAAKf,IAAI,YACpByqF,EAAS1pF,KAAKf,IAAI,YACXe,KACGA,KAAKf,IAAI,WAAWylF,aAC1B,+BACA/uE,EACA+zE,GAEWzkF,MAAK,WAChB,OAAOH,EAAK6kF,4BAA4B1kF,MAAK,WAQzC,OANAH,EAAK7F,IAAI,oBAAoB2qF,WAAW,mBAAoB,MAE5D9kF,EAAK7F,IAAI,oBAAoB2qF,WAAW,gCAAiC,MAIlE9kF,EAAK7F,IAAI,WAAWmV,eAIvCqyE,oBAAqB,WAAY,IACzB1iC,EAAG/5C,EAASf,EAAM48E,EADOhvE,EAAA7W;AAgF7B,OA/DA6lF,EAAW7lF,KAAKf,IAAI,YACpB8kD,EAAI/jD,KAAKf,IAAI,aACbgK,EAAOjJ,MACPgK,EAAU+5C,EAAEx6C,KAAK,CACbzI,IAAK,gBACLD,OAAQ,OACRI,KAAM,CACFshF,UAAWsD,EAAS5mF,IAAI,aACxBwjF,SAAUoD,EAAS5mF,IAAI,YACvBuO,QAASq4E,EAAS5mF,IAAI,WACtBy6E,QAASmM,EAAS5mF,IAAI,WACtB8nF,MAAOlB,EAAS5mF,IAAI,SACpByoF,MAAO7B,EAAS5mF,IAAI,SACpBstC,MAAOs5C,EAAS5mF,IAAI,SACpB6oF,OAAQjC,EAAS5mF,IAAI,UACrBu0D,SAAUqyB,EAAS5mF,IAAI,YACvBsM,SAAUvL,KAAKf,IAAI,oBAAoBqzB,MAAM,QAAQ3U,KAAK,SAG1D1Y,MAAK,SAAC0R,GASV,OAPA1N,EAAK9G,IAAI,WAAYwU,EAAKhB,UAC1B1M,EAAK9G,IAAI,SAAUwU,EAAKu+D,QACnBr+D,EAAK5X,IAAI,uBACX2kF,iBAAiBjtE,EAAKhB,UACzB1M,EAAK9G,IAAI,WAAY0jF,EAAS5mF,IAAI,aAClCgK,EAAK9G,IAAI,QAAQ,GAEV0U,EAAK5X,IAAI,oBAAoB2H,SAAQ,SAAU0iF,GAClD,IAAIO,EAAcC,EAAgBC,EAAeC,EAAeC;AAChE,GAA4B,SAAxBX,EAAQrqF,IAAI,QAeZ,OAdA4qF,EAAehE,EAAS5mF,IAAI,WAC5B+qF,EAAgBnE,EAAS5mF,IAAI,WAC7B6qF,EAAiBjE,EAAS5mF,IAAI,YAAc,IAAM4mF,EAAS5mF,IAAI,aAC/D8qF,EACI9gF,EAAKhK,IAAI,QAAQqD,EAAE,WAAa0nF,EAAgB,gBAChD,WACA/gF,EAAKhK,IAAI,QAAQqD,EAAE,WAAa0nF,EAAgB,sBAChD,QACAF,EACA,OACAjE,EAAS5mF,IAAI,SACb,OACA4mF,EAAS5mF,IAAI,SACjBgrF,EAAehhF,EAAKhK,IAAI,QAAQqD,EAAE,WAAa0nF,EAAgB,eACvDhgF,EAAUf,EAAKhK,IAAI,aAAa+kD,MAAM,CAC1CljD,IAAK,eACLG,KAAM,CACF2lB,QAASmjE,EAAc36E,QAAQ,aAAcy6E,GAC7Cn9C,OAAQu9C,EAAa76E,QAAQ,aAAcy6E,GAC3Cr8E,QAASw8E,GAEbnpF,OAAQ,eAKxBmJ,EAAQioD,OAAM,SAAUt7C,GACpB,IAAIsL;AAGJ,OAFAA,EAAM/e,KAAKwD,MAAMiQ,EAAK3U,cACtBK,MAAM,+CAAiD4f,EAAIvhB,mBACpDuI,EAAKgzE,kBAAkB,YAE3BjyE,GAEX2/E,0BAA2B,WAGvB,OADI3pF,KAAKf,IAAI,aACJ+kD,MAAM,CACXljD,IAAK,uBACLG,KAAM,CACFipF,UAAW,CAAClqF,KAAKf,IAAI,WACrByL,KAAM,iBAEV7J,OAAQ,UAGhB05C,QAAS,CACL4vC,MAAO,WACH,OAAOnqF,KAAK2mF;;MCrIKpnF,MAAMg5E,WAAWn5E,OAAO,CACjDO,KAAMJ,MAAMC,OAAOC,UACnBkmF,mBAAoBpmF,MAAMC,OAAOo9E,WAAW,oBAC5CkJ,iBAAkBhvE,GAAG2V,EAAE,IACvB29D,aAAc7qF,MAAMukD,SAAS,2BAA2B,WACpD,OAAO9jD,KAAKmC,IAAI,mBAAoB2U,GAAG2V,EAAEzsB,KAAKf,IAAI,YAAYk9B,SAAS,YAAY,QAEvF5wB,SAAUhM,MAAMwB,SAASkhC,MAAM,+BAC/BooD,UAAW9qF,MAAMwB,SAAS,YAAY,WAClC,IAAIpB;AAEJ,OADAA,EAAOK,KAAKf,IAAI,QACTe,KAAKf,IAAI,YAAY4iB,KAAI,SAAU5L,GAgBtC,OAfAA,EAAKq0E,eAAkB,WACnB,OAAQr0E,EAAKwzE,WACT,IAAK,UACD,OAAO9pF,EAAK2C,EAAE;AAClB,IAAK,aACD,OAAO3C,EAAK2C,EAAE;AAClB,IAAK,WACD,OAAO3C,EAAK2C,EAAE;AAClB,IAAK,oBACD,OAAO3C,EAAK2C,EAAE,0CATH,GAYnB2T,EAAKwzC,OAAwC,UAA/BxzC,EAAKwzC,MAAMj2C,UAAU,EAAG,KACtCyC,EAAKqpD,KAAOrpD,EAAKwzC,MAAMj2C,UAAU,IAE9ByC,QAGfskC,QAAS,CACLgwC,SAAU,SAAU7oD,GAChB,OAAOp7B,OAAOmzC,KAAK/X,EAAM,WAE7BnpB,KAAM,WAIF,OAFqBvY,KAAKf,IAAI,sBACXkD,IAAI,mBAAoBnC,KAAKf,IAAI,qBAC7Ce,KAAKi8E,kBAAkB,2BAElCl8D,MAAO,SAAUxV,GAEb,OADAA,EAAO8pD,eAAe,aACf;;AC9CnB,IACI1rD,EAAU,GAAGA,QAcT8P,EAAalZ,MAAbkZ,WAEUlZ,MAAMg5E,WAAWn5E,OAAOorF,EAAAA,QAAW,CACjDhpD,UAAW1qB,GAAGtX,OAAOC,QAAQ,qBAC7BE,KAAMJ,MAAMC,OAAOC,UACnBmpC,YAAa,CAAC,UACdjP,OAAQ,GACRp2B,KAAMuT,GAAG/V,SAAS,SAAS,WACvB,OAAOf,KAAKf,IAAI,kCAEpBwrF,WAAW,EACXV,cAAejzE,GAAG/V,UAAS,WACvB,OAAOf,KAAKf,IAAI,QAAQqD,EAAE,8BAA+B,CACrDm6E,OACIz8E,KAAKf,IAAI,iCACT,IACAe,KAAKf,IAAI,qCAGrBkb,OAAQ5a,MAAMwB,SAAS,SAAS,WAAY,IACpCgjD,EAAG07B,EAAeiL,EAAgBvwE,EAAQ5W,EAAMiP,EAAOnI,EAASpB,EAD5BnE,EAAA9E;AAmBxC,OAjBAiJ,EAAOjJ,MAKHqK,GAJJ9G,EAAOvD,KAAKf,IAAI,gCAIFe,KAAKwhC,UAAUrnB,OAAO5W,GAFtBvD,KAAKf,IAAI,oBAKnBoL,EAAUrK,KAAKf,IAAI,aAEvBuT,EAAQxS,KAAKf,IAAI,WAEbM,MAAMkD,IAAI8V,KAAKvY,MAAM,WACjB,OAAO8E,EAAKm3E,kBAAkB,YAGtC9hE,EAAS,GACJ9P,GAGD9G,IACAmnF,EAAiBC,EAAAA,QAAelU,qBACViU,EAAennF,KACjCk8E,EAAgBiL,EAAennF,GAC/BwgD,EAAI/jD,KAAKf,IAAI,cAGrBmK,EAAAA,QAAEe,KAAKE,GAAS,SAAUqB,EAAOk/E,GAC7B,IAAIr7E,EAAK0J,EAAM3J,EAAKvQ;AAMpB,GAJAuQ,EAAMpM,KAAKwD,MAAMxD,KAAKC,UAAUynF,IAC5BnL,GAAiBA,EAAcnwE,EAAI05B,OACnC15B,EAAMy0C,EAAE8mC,eAAev7E,EAAKmwE,EAAcnwE,EAAI05B,SAE9C//B,EAAKhK,IAAI,gBAA8D,IAA7CgK,EAAKhK,IAAI,cAAc0J,QAAQ2G,EAAI05B,QAGjE15B,EAAI05B,IAAMt9B,EAGN8G,EAAMvT,IAAIqQ,EAAI05B,MAAM,CACpB,GAAIpnC,MAAMkB,QAAQ0P,EAAMvT,IAAIqQ,EAAI05B,OAASx2B,EAAMvT,IAAIqQ,EAAI05B,IAAM,WAAa,EACtE;AAEJ,KAAM//B,EAAKu4B,UAAUspD,SAASx7E,EAAKkD,IAAsB,eAAZlD,EAAI05B,OAChC,OAATzlC,GAA0B,QAATA,UACV+L,EAAIzC,MAEf0C,EAAO,WACH,OAAQD,EAAI05B,KACR,IAAK,UA2BD,OA1BIx2B,EAAMvT,IAAI,YAENga,EADuC,WAAvC1Z,MAAM6I,OAAOoK,EAAMvT,IAAI,YAChBiE,KAAKwD,MAAM8L,EAAMvT,IAAI,YAErBuT,EAAMvT,IAAI,WAErBF,EAAQ,IAAIQ,MAAMua,OAAOiH,SACrB,uCACI9H,EAAK8d,QACL,aACA9d,EAAK8xE,YACL,WACA9xE,EAAK+xE,UACL,QACA/xE,EAAKgyE,SACL,KACAhiF,EAAKhK,IAAI,QAAQqD,EAAE,8BACnB,KACA2G,EAAKhK,IAAI,QAAQqD,EAAE,gCACnB,KACA2W,EAAKiyE,UACL,WAGRnsF,EAAQ,GAEL,CACHA,MAAOA;AAEf,QACI,MAAO,CACHA,MAAOkK,EAAKu4B,UAAUrwB,OAClBqB,EAAMvT,IAAIqQ,EAAI05B,KACd15B,EACArG,EACAuJ,GACA,EACAjP,KAxCb,IA6CER,QACLwM,EAAIxM,MAAQkG,EAAKu4B,UAAU2pD,aAAa5nF,EAAMuT,GAAGjY,OAAO+J,OAAO0G,KAE/DC,EAAIxQ,OACJ,OAAOob,EAAOjP,KAAKqE,OAK5B4K,GApFIA,KAsFfunB,KAAM5qB,GAAG/V,SAAS,QAAS,aAAa,WACpC,IAAIqqF;AAEJ,OADAA,EAAYprF,KAAKf,IAAI,cAEQ,WAArBuD,EAAO4oF,GACAA,EAAU5U,MAEV4U,EAEJprF,KAAKf,IAAI,SACTe,KAAKf,IAAI,+BAA+BqnC,aACjC,UAEP,WAGf+kD,QAASv0E,GAAG/V,SAAS,SAAS,WAC1B,IAAIuqF;AACJ,GAAItrF,KAAKf,IAAI,SAAU,CAGnB,GAAyB,MAFhBwZ,EAASzY,MAAM0Y,OAAO,eAAe6yE,gBAAgBC,WAAWh5B,MACzE84B,EAAYtrF,KAAKf,IAAI,+BAAiC,SAElD,OAAOqsF;AACJ,GAAItrF,KAAKf,IAAI,eAChB,OAAOe,KAAKf,IAAI,eAGxB,OAAO,KAEX26C,UAAW9iC,GAAG/V,SAAS,SAAS,WAC5B,IAAIuqF;AACJ,GAAItrF,KAAKf,IAAI,SAAU,CAGnB,GAAyB,MAFhBwZ,EAASzY,MAAM0Y,OAAO,eAAe6yE,gBAAgBC,WAAWh5B,MACzE84B,EAAYtrF,KAAKf,IAAI,+BAAiC,UAElD,OAAOqsF;AACJ,GAAItrF,KAAKf,IAAI,gBAChB,OAAOe,KAAKf,IAAI,gBAGxB,OAAO,KAEXwsF,UAAW30E,GAAG/V,SAAS,QAAS,aAAa,WACzC,IAAIqqF;AAEJ,OADAA,EAAYprF,KAAKf,IAAI,eACiB,WAArBuD,EAAO4oF,GACbA,EAAUzmE,OAEV,QAGf+mE,0BAA2BnsF,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,KAEXs4E,YAAa,WAAiC,IACtCC,EAAY9qF,EADGqQ,EAAuBhR,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAd,KAAMwkB,EAAQxkB,UAAA+S,OAAA,EAAA/S,UAAA,QAAAukB;AAiB1C,OAfA5jB,EAAM,UACN8qF,EAAa,CACTroF,KAAMvD,KAAKf,IAAI,QAAQqnC,aACvBkG,KAAM38B,OAAO2B,SACb7N,GAAI3D,KAAKf,IAAI,YACbm9B,QAASl5B,KAAKC,UAAU,CACpBQ,GAAI3D,KAAKf,IAAI,eAGjB0lB,EAAOtI,WACPuvE,EAAWvvE,SAAW9c,MAAMN,IAAI0lB,EAAQ,gBAExCxT,IACAy6E,EAAWlhF,KAAOyG,GAEfnR,KAAKf,IAAI,aAAa+kD,MAAM,CAC/BnjD,OAAQ,OACRmE,SAAU,OACVlE,IAAKA,EACLG,KAAM2qF,KAGdC,WAAYtsF,MAAMwB,UAAS,WACvB,MAAO,CACH,CACI4C,GAAI,kBACJkJ,KAAM7M,KAAKf,IAAI,QAAQqD,EAAE,uCAIrCi4C,QAAS,CACLuxC,QAAS,WACL,IAAIT;AAGJ,GAFIrrF,KAAKf,IAAI,aACX60C,WAAW9zC,KAAKf,IAAI,UAClBe,KAAKf,IAAI,WAET,OADAosF,EAAUrrF,KAAKf,IAAI,WACZe,KAAKi8E,kBAAkBoP,IAGtCU,WAAY,SAAUC,EAAWjpF,EAAO6jB,EAASjC,GAAQ,IACjDo/B,EAAGtf,EAASwnD,EAAQC,EAAe1oF,EAAO2W,EAAQ5W,EAAMsJ,EAAMs/E,EAAcC,EAD3Bv1E,EAAA7W;AAGrD,GADAisF,EAAS1sF,MAAAuD,QAAQkpF,GAAaA,EAAYA,EAAUv8E,MAAM,KAGnD,CAyBH,IAAK5C,KAxBLo/E,EAAOrlF,SAAQ,SAAC2lC,GACZ,IACK,8FAA8FhrC,KAC3FgrC,GAGJ,OAAO11B,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,GAClB6oF,EAAS,GACT3nD,EAAU,GACVynD,EAAgB,GAEZC,EADAnsF,KAAKf,IAAI,mBACMe,KAAKf,IAAI,2BAA2BwQ,MAAM,KAE1C,GAEN0K,EACT3W,EAAQ2W,EAAOtN,GACXs/E,EAAaj5E,OAAS,IAAqC,IAAhCi5E,EAAaxjF,QAAQkE,KAGpDtN,MAAM4C,IAAIqB,EAAO,MAAOqJ,GACpBrJ,EAAM6K,UAAY7K,EAAM6K,SAASy3B,cAGrCsmD,EAAOlhF,KAAK64C,EAAE5qC,wBAAwB5V,EAAMC,EAAMwlC,MAClDvE,EAAQv5B,KAAK1H,EAAMwlC,KACnBkjD,EAAchhF,KAAK1H;AAEvB,OAAOxD,KAAK2rF,YAAY,SAAUhnE,GAAQ1f,MAAK,SAAConF,GAC5C,OAAOtoC,EACFC,MAAM,CACHnjD,OAAQ,OACRC,IAAK,oBACLG,KAAM,CACFqrC,WAAY2/C,EACZ1/C,MAAO8/C,EACP3/C,OAAQ3pC,EACR6jB,QAASA,EACT6lB,gBAAiB9nB,EAAOkoB,aACxBtpC,KAAMsT,EAAK5X,IAAI,QAAQqnC,aACvB4F,OAAQ,CAACr1B,EAAK5X,IAAI,gBAGzBgG,MAAK,WAEF,OADA4R,EAAK1U,IAAI,WAAW,GACb0U,EAAK1U,IAAI,aAAa,SAxDzC,OAAOnC,KAAKmC,IAAI,cAAenC,KAAKf,IAAI,QAAQqD,EAAE,iCA6D1D4/D,YAAa,WACT,OAAOliE,KAAKmC,IAAI,SAAU;;MChTrBmqF,EAAAA,QAAqBltF,OAAO,CACzCO,KAAMJ,MAAMC,OAAOC,UACnBitC,OAAQ51B,GAAG/V,SAAS,QAAS,sBAAsB,WAE/C,OAAIf,KAAKf,IAAI,+BAA+B6C,SAAS,sBAC1C9B,KAAKwhC,UAAUt3B,QAAQlK,KAAKf,IAAI,QAAQqnC,cACnCz5B,KAEL7M,KAAKf,IAAI,QAAQqD,EAAE,mBAAqBtC,KAAKf,IAAI;eCtBpEP,OAAA,mBAAA,CAAA,UAAA,sBAAA,SAAAC,EAAA4tF,GAGA1tF,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAstF,EAAArtF;MCRestF,EAAAA;;MCAAA,EAAAA;;MCAAA,EAAAA;;MCAAA,EAAAA;;MCAAA,EAAAA;eCDf9tF,OAAA,qCAAA,CAAA,UAAA,mCAAA,SAAAC,EAAA8tF,GAGA5tF,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAwtF,EAAAvtF,cCTAR,OAAA,8CAAA,CAAA,UAAA,4CAAA,SAAAC,EAAA+tF,GAGA7tF,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAytF,EAAAxtF,cCTAR,OAAA,gDAAA,CAAA,UAAA,8CAAA,SAAAC,EAAAguF,GAGA9tF,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA0tF,EAAAztF;;;;;;;;;;;;;;ICDqB0tF;;;AAKjB,SAAAA,IAAc,IAAA9nF;AAAA,OAAAyZ,EAAAve,KAAA4sF,GAAApuE,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,IAA1B4jE,EAA0B1sF,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,GAAI4jE,EAAS,OAAO7sF,KAAK8sF,mBAAmBvpF,EAAM0lB;AAElD,IAAMzlB,EAAQxD,KAAKkK,MAAMiQ,OAAO5W,GAAM0lB;AAItC,OAAIzlB,EAAMgjF,eAAe,QAAgBhjF,EAAMqJ,KACnC7M,KAAK8sF,mBAAmBvpF,EAAM0lB,qCAG9C,SAA0B1lB,EAAc0lB,GAAmB,IAAApS,EAAA7W,KACjD+sF,EAAqB,CACvB,UAAYxpF,EAAO,IAAM0lB,EACzB,kBAAoBA,GAGlB+jE,EAA+BD,EAASloF,MAAK,SAACgC,GAChD,OAAOgQ,EAAKlX,KAAK2rB,OAAOzkB;AAG5B,OAAImmF,EAAiBhtF,KAAKL,KAAK2C,EAAE0qF,GACrBD,EAAS,6BAGzB,SAAkBtsE,GAGd,IAH+B,IAAAgD,EAAAzjB,KACzBuD,EAAOhE,MAAAN,IAAIwhB,EAAQ,yBACnBwsE,EAAkBxsE,EAAOysE,SAC/BnoE,EAAA,EAAAooE,EAAoB,CAAC,UAArBpoE,EAAAooE,EAAAj6E,OAAA6R,IAAgC,CAA3B,IAAMvhB,EAAK2pF,EAAApoE;AACPxlB,MAAAqT,QAAQq6E,EAAWzpF,MACpBypF,EAAWzpF,GAAS,MAsB5B,OAlBAid,EAAO2sE,kBAAiB,SAACvmF,EAAawmF,GAClC,IAAMC,EAAUD,EAAaE;AAC7B,IACiB,cAAZD,GAAuC,YAAZA,KAC3B,CAAC,gBAAiB,iBAAkB,YAAYxrF,SAAS+E,GAE1D,GAAyC,kBAArC4c,EAAKvZ,MAAM1G,MAAMD,EAAMsD,GAAK6D,KAA0B,CACtD,IAAM8iF,EAAkB;AACxB/sE,EAAO5Z,GAAKD,SAAQ,SAAC6mF,GACjBD,EAAWtiF,KAAKuY,EAAKqwB,WAAW25C,OAEpCR,EAAWpmF,GAAO2mF,OAElBP,EAAWpmF,GAAO4Z,EAAO5Z,MAK9B7G,KAAKkN,MAAM4b,aAAavlB,EAAM0pF;;;;;;;;;;;;;;;ICxDxBS;;;;;;mIAIjB,SAAe/rF,GACX,GAAI3B,KAAK2tF,WAAWhsF,GAAQ,OAAO3B,KAAK2tF,WAAWhsF;AACnD,GAAI3B,KAAK4tF,cAAcjsF,GAAQ,OAAO3B,KAAK4tF,cAAcjsF;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,KAAK6tF,sBAAsBzoF,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,IAAM0oF,EAAkB1oF,EAAQqH,cAAc2C,QAAQ,KAAM;AAC5D,OAAIpP,KAAKL,KAAK2rB,OAAO,SAAWwiE,GACrB9tF,KAAKL,KAAK2C,EAAE,SAAWwrF,GAE3B1oF,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,MAAAwuF,QAAQ3uF,OAARG,MAAAyuF,QAAwB,CASnCn0D,WATmC,SASxBF,EAAgBjvB,EAAc+V,GACrCzgB,KAAKsI,QAAQ,aAAc,CAAEqxB,OAAAA,EAAQjvB,KAAAA,EAAM+V,OAAAA,KAQ/Cw6D,QAlBmC,WAmB/Bj7E,KAAKsI,QAAQ;;;;;;;;;;;;;;gBC1BA2lF;;;AAWjB,SAAAA,IAAc,IAAAnpF;AAAA,OAAAyZ,EAAAve,KAAAiuF,GAAAzvE,EAAAC,EACV3Z,EAAA7E,EAAAC,MAAAF,KAASG,YADC,OAAAue,EAAAD,EAAA3Z,IAAAuN,EAAAoM,EAAA3Z,GAAA,SAFG,IAEHA,kCAId,WACI,OAAO9E,KAAKkuF,YAYhB,SAAUhkF,GACNlK,KAAKkuF,OAAShkF,wBASlB,SAAc3G,GACV,GAAIhE,MAAAqT,QAAQ5S,KAAKkK,OACb,MAAO;AAEX,IAAK3G,EAEG,MAAO;AAOf,GAHAA,EAAOhE,MAAAua,OAAAq0E,WAAW5qF,GAClBA,EAAOhE,MAAAua,OAAAwsB,WAAW/iC,IAEbvD,KAAKkK,MAAMs8E,eAAejjF,GAC3B,MAAM,IAAAhE,MAAAgI,MAAe,+BAAiChE,EAAO;AAGjE,OAAOvD,KAAKkK,MAAM3G,GAAM8G,6BAU5B,SAAa9G,EAAc0lB,GACvB1lB,EAAOhE,MAAAua,OAAAq0E,WAAW5uF,MAAAua,OAAAwsB,WAAW/iC;AAC7B,IAAMC,EAAQxD,KAAKouF,UAAU7qF,EAAM0lB;AAEnC,MAAO,CACH1lB,KAAAA,EACAsJ,KAAMoc,EACNve,KAAMlH,EAAMkH,KACZw2B,gBAAiBlhC,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,OAAAq0E,WAAW5uF,MAAAua,OAAAwsB,WAAW/iC;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,EACNq6B,gBAAiBrqB,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,KAAK49E,WAAWr6E,IACdhE,MAAA+gB,UAAUtgB,KAAKkK,MAAM3G,GAAM8G,QAAQwC;;;;;;;;;;;;;;gBCvI7BwhF;;;;;;oFAGW,6CAE5B,SAAexnF,EAAa9H,GACxBiI,aAAaM,QAAQtH,KAAKsuF,UAAUznF,GAAM3D,KAAKC,UAAUpE,2BAG7D,SAAe8H,GACX,IAAMqvB,EAAMlvB,aAAaR,QAAQxG,KAAKsuF,UAAUznF;AAChD,OAAO3D,KAAKwD,MAAMwvB,6BAGtB,SAAkBrvB,GACdG,aAAaG,WAAWnH,KAAKsuF,UAAUznF,6BAG3C,SAAiBqvB,GAAa,IAAAq4D,EACpBC,EAAW,QAAAD,EAAGvuF,KAAKJ,QAAQi0B,mBAAhB,IAAA06D,OAAA,EAAGA,EAA0B5qF;AAC9C,IAAK6qF,EACD,MAAM,IAAIjnF,MAAM;AACpB,OAAOvH,KAAKqE,UAAY,IAAMmqF,EAAc,IAAMt4D;;;;;;;;;;;;;;;;;;;;;;;;;;;IClBrCu4D;;;;;;2HAIjB,SAAYvY,GACR,IAAKA,EAAO,OAAO;AACd32E,MAAAuD,QAAQozE,KAAQA,EAAQ,CAACA;AAFa,IAAAt5C,EAAAC,EAAAC,EAI1Bo5C;AAJ0B,IAI3C,IAAAr5C,EAAAhjB,MAAA+iB,EAAAC,EAAAljB,KAAAojB,MAAwB,CAAA,IAAfhB,EAAea,EAAA79B,MAChByN,GAAU;AAMd,GAL6B,MAAzBuvB,EAAKvoB,UAAU,EAAG,KAClBhH,GAAU,EACVuvB,EAAOA,EAAKvoB,UAAU,MAEfhH,GAAWxM,KAAK0uF,QAAQ3yD,GAAQ/7B,KAAK0uF,QAAQ3yD,IAC/C,OAAO,GAXuB,MAAAsB,GAAAR,EAAA1V,EAAAkW,GAAA,QAAAR,EAAAS,IAc3C,OAAO,yBAGX,SAAevB,GACX,MAA6B,cAAzBA,EAAKvoB,UAAU,EAAG,GAA2BxT,KAAK2uF,cAAc5yD,EAAKtsB,MAAM,KAAK,IAChFssB,EAAKj6B,SAAS,KAAa9B,KAAK4uF,kBAAkB7yD,KAClDA,EAAKj6B,SAAS,MAAa9B,KAAK6uF,mBAAmB9yD,gCAK3D,SAAsB2K,GAGlB,OAFwBA,EAAWj3B,MAAM,KAElB3N,SAClB9B,KAAKJ,QAAQi0B,YAA6B03C,UAAU1gE,6CAI7D,SAA0BkxB,GACtB,IAAMtsB,EAAQssB,EAAKtsB,MAAM,KACnBlM,EAAOhE,MAAAua,OAAAq0E,WAAW1+E,EAAM,IACxBP,EAAYO,EAAM;AAExB,SAAKzP,KAAKkK,MAAM0zE,WAAWr6E,KAET,WAAd2L,EAA+BlP,KAAKkK,MAAMA,MAAM3G,GAAMZ,OACrD3C,KAAKkK,MAAMA,MAAM3G,GAAMkL,YAEnBzO,KAAKkK,MAAMA,MAAM3G,GAAMkL,WAAYS,uCAGhD,SAA2B6sB,GACvB,IAAMtsB,EAAQssB,EAAKtsB,MAAM;AACzB,OAAOzP,KAAKkK,MAAM8xB,YAAYvsB,EAAM,GAAIA,EAAM;;ACtC/C,IAAMqb,EAAY,CACrB,CAAEnnB,GAAI,KAAMkJ,KAAM,UAAWmmD,OAAQ,QACrC,CAAErvD,GAAI,KAAMkJ,KAAM,SAAUmmD,OAAQ,OACpC,CAAErvD,GAAI,KAAMkJ,KAAM,UAAWmmD,OAAQ,QACrC,CAAErvD,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,SAAUmmD,OAAQ,OACpC,CAAErvD,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,UAAWmmD,OAAQ,OACrC,CAAErvD,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,UAAWmmD,OAAQ,OACrC,CAAErvD,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,SAAUmmD,OAAQ,QACpC,CAAErvD,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,cAAemmD,OAAQ,OACzC,CAAErvD,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,SAAUmmD,OAAQ,OACpC,CAAErvD,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,SAAUmmD,OAAQ,OACpC,CAAErvD,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,QAASmmD,OAAQ,OACnC,CAAErvD,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,iBAAkBmmD,OAAQ,OAC5C,CAAErvD,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,IAAMiiF,EAAc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM;;AAOrE,IAAMC,EAAYjkE,EAAU3G,QAAO,SAAC3W,GACvC,OAAOshF,EAAYhtF,SAAS0L,EAAQ7J;;AAQjC,IAAMqrF,EAAYlkE,EAAU3G,QAAO,SAAC3W,GACvC,OAAOA,EAAQg5E,eAAe;;MAInB,CAAE17D,UAAAA,EAAWgkE,YAAAA,EAAaC,UAAAA,EAAWC,UAAAA;;;;ACzSpD,IAOax9D,EAAa,CACtB,YACA,YACA,YACA,aACA,YACA,YACA;AAGG,SAAS/D,EAAY3sB,EAAao1B,GACrC,OAAIA,EAAI+4D,WAAW,QAAgB/4D,EACvBp1B,EAAMo1B,EAWf,SAASmrC,EAAgBvgE,GAA4C,IAA/BouF,EAA+B/uF,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAR;AAChE,IAAKW,EACD,MAAM,IAAIyG,MACN;AAER,OAAO,IAAAhI,MAAAkG,KAAAwC,SAAiB,SAACvC,EAASwC,GAC9B,IAAMsyE,EAAM,IAAI2U;AAChB3U,EAAI/gC,KAAK,MAAO34C,GAAK,GAErB05E,EAAI0U,aAAeA,EAEnB1U,EAAIxgB,OAAJ12C,EAAAzL,mBAAAC,MAAa,SAAAC,IAAA,IAAAwW;AAAA,OAAA1W,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,IACHgW,EAAOisD,EAAIryE,UACZinF,iBAAmB,IAAIpwE,KAC5BuP,EAAK1hB,KAAO,OAEP2kB,EAAW1vB,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,OAcbyiE,EAAI6U,QAAU,SAAC1tF,GACXuG,EAAOvG,IAGX64E,EAAI9hD,UAeL,SAASpK,EACZvB,GAKF,IAJEmH,EAIF/zB,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAJyB,KACvB0rD,EAGF1rD,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAH0B,KACxBgvB,EAEFhvB,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAFoB,GAClBmvF,IACFnvF,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,KAAAA,UAAA;AAEE,OAAO,IAAAZ,MAAAkG,KAAAwC,SAAiB,SAACvC,EAASwC,GAE9B,IAAKonF,IAAoBzjC,EACrB,MAAM,IAAItkD,MACN;AAGR,IAAMgoF,EAAOxiE,EAAKriB,MAAQ;AAGtBykB,EAAU,GAAM,IAAGA,EAAUjZ,QAAQiZ,EAAU,KAAKo7C,QAAQ;AAEhE,IAAMilB,EAAS,IAAIC;AAEC,iBAAT1iE,IACPA,EAAO2iE,EAAc3iE,IAGzByiE,EAAOv+D,cAAclE,GAErByiE,EAAOG,UAAY,WACf,IAAMpU,EAAM,IAAIxhB;AAChBwhB,EAAIrhB,IAAMs1B,EAAOj6D,OACjBgmD,EAAIvhB,OAAS,WACT,IAAMhmC,EAASnU,SAASoU,cAAc,UAClC27D,EAAezgE,EACf0gE,EA5GI,KA+GJtU,MAAAA,OAAA,EAAAA,EAAKrnD,OAAQ,OAAQqnD,MAAAA,OAAA,EAAAA,EAAK1vB,QAAS,QACnC+jC,EAAe,IACfC,EAAuB,GAItB37D,IAAOA,EAAQqnD,EAAIrnD,MAAQ27D;AAEhC,IAAMC,EAAc57D,EAAQqnD,EAAIrnD;AAE5Bo7D,IAAiBzjC,EAAS0vB,EAAI1vB,OAASikC,GAE3C97D,EAAOE,MAAQA,EACfF,EAAO63B,OAAS31C,OAAO21C;AACvB,IAAMkkC,EAAM/7D,EAAO6lC,WAAW;AAE9Bk2B,MAAAA,GAAAA,EAAK91B,UAAUshB,EAAK,EAAG,EAAGrnD,EAAOhe,OAAO21C,IAExCnmD,EAAQsuB,EAAOS,UAAU86D,EAAMK,MAIvCJ,EAAOH,QAAU,SAAChyD,GACdn1B,EAAOm1B,OAaZ,SAASqyD,EAAcM,GAAoC,IAAnBC,EAAmB9vF,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAR,OAChDoP,EAAMygF,EAAQvgF,MAAM;AAC1B,IAAKF,EAAK,OAAO;AAMjB,IALA,IAAMggF,EAAOhgF,EAAI,GAAGwG,MAAM,WAAY,GAChCm6E,EAAOC,KAAK5gF,EAAI,IAClBoK,EAAIu2E,EAAKh9E,OACPk9E,EAAQ,IAAIC,WAAW12E,GAEtBA,KACHy2E,EAAMz2E,GAAKu2E,EAAKI,WAAW32E;AAE/B,IAAM4U,EAAO,IAAIgiE,KAAK,CAACH,GAAQ,CAAE1lF,KAAM6kF;AAGvC,OAFAhhE,EAAK1hB,KAAOojF,EACZ1hE,EAAK6gE,iBAAmB,IAAIpwE,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,CACXsD,WAAAA,EACA/D,YAAAA,EACA4zC,gBAAAA,EACA/yC,YAAAA,EACAohE,cAAAA,EACAxhE,eAAAA;8ECjYG,SAASlG,IAAsB,IAAbkM,EAAa/zB,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAL;AAC7B,OAAOmG,OAAOkqF,WAAW,+BAAiCt8D,EAAQ,OAAOu8D;AAQtE,IAAMrkE,KACE9lB,OAAO2pB,UAAU2lC,UACZjtD,QAAQ,SACb,GAAOsnB,UAAU2lC,UAAU7/C,MAAM;;AASzC,IAAMsW,EACF/lB,OAAOsrC,SAA+B,YAApB8+C,OAAOtL;;AAS7B,IAAMuL,EAAW,SAAC7vF,GACrB,IACM2O,EADOnJ,OAAOkC,SAASC,KACVgH,MAAM;AAQzB,OANIA,EAAM,IAAiC,WAA1BA,EAAM,GAAGm4D,OAAO,EAAG,WAAwBn4D,EAAM,IAIlE3O,GAFAA,EAAM8vF,mBAAmB9vF,IAEfsO,QAAQ,MAAO,MAEjB6/E,WAAW,QAAgBnuF,EAE5B2O,EAAM,GAAK,KAAmB,MAAZA,EAAM,GAAaA,EAAM,GAAK,IAAM3O,EAAMA;;MAGxD,CAAEknB,SAAAA,EAAUoE,KAAAA,EAAMC,UAAAA,EAAWskE,SAAAA;;;;;;;;;;;;;;;wICn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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    } | null;\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            if (!newPosition.lockedPosition) return;\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 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        // Clear the stale record so updateReport() fetches a fresh copy.\n        // Must unload even when isDeleted (root.deleted.saved): without this,\n        // updateReport() pushes fresh server data into the deleted record,\n        // which triggers becomeDirty on a state that has no handler for it.\n        if (!row.isDestroyed) {\n            row.unloadRecord();\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            this.get('array').removeObject(obj);\n            // Re-validate after value updates by triggering focusIn (clears error) + focusOut (validates)\n            var component = this;\n            setTimeout(function () {\n                var input = component.element && component.element.querySelector('input[type=\"text\"]');\n                if (input) {\n                    input.focus();\n                    input.blur();\n                }\n            }, 300);\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                        var otherRows = rows.toArray().filter(function (row) {\n                            return row.get('id') !== self.get('model.id');\n                        });\n                        if (otherRows.length > 0) {\n                            // Find which specific values are duplicates\n                            var duplicates = [];\n                            var fieldExt = self.get('field.ext');\n                            var myValues = self.get('value');\n                            try { myValues = JSON.parse(myValues); } catch (e) { myValues = [myValues]; }\n                            if (!Array.isArray(myValues)) myValues = [myValues];\n                            otherRows.forEach(function (row) {\n                                var otherVal = row.get(fieldExt);\n                                try { otherVal = JSON.parse(otherVal); } catch (e) { otherVal = [otherVal]; }\n                                if (!Array.isArray(otherVal)) otherVal = [otherVal];\n                                const otherValStrings = otherVal.map(String);\n                                myValues.forEach(function (v) {\n                                    const vStr = String(v);\n                                    if (otherValStrings.indexOf(vStr) !== -1 && duplicates.indexOf(vStr) === -1) {\n                                        duplicates.push(vStr);\n                                    }\n                                });\n                            });\n                            self.set('duplicateValues', duplicates.length > 0 ? duplicates : null);\n                            self.set(\n                                'error',\n                                self.get('intl').t('field.error.unique', {\n                                    field: fieldname.toLowerCase(),\n                                    value: duplicates.join(', '),\n                                }),\n                            );\n                        } else {\n                            self.set('duplicateValues', null);\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            method: 'post',\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","import { helper } from '@ember/component/helper';\n\nexport function isDuplicate(params) {\n    const value = params[0];\n    const duplicateValues = params[1];\n    if (!duplicateValues || !Array.isArray(duplicateValues) || !value) return false;\n    return duplicateValues.includes(String(value));\n}\n\nexport default helper(isDuplicate);\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                    const maxSignatureWidth = 150;\n                    resize_factor = imageWidth > maxSignatureWidth ? maxSignatureWidth / imageWidth : 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 !== undefined && modelfieldid !== null) {\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: this.user?.nationality,\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        if (!row.isDestroyed) {\n            row.unloadRecord();\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\":\"62qVycSy\",\"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\\\",\\\"limit\\\",\\\"localStorageKey\\\",\\\"settings\\\",\\\"status\\\",\\\"fullscreenmode\\\",\\\"bubbleSetRowsPerPage\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\",\\\"worktimeRows\\\"]],[24,[\\\"worktime_page\\\"]],[24,[\\\"worktime_limit\\\"]],\\\"aggregated.worktime\\\",[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\\\",\\\"limit\\\",\\\"localStorageKey\\\",\\\"settings\\\",\\\"status\\\",\\\"fullscreenmode\\\",\\\"bubbleSetRowsPerPage\\\"],[\\\"bubbleTransition\\\",\\\"abcense\\\",[24,[\\\"model\\\",\\\"absenceRows\\\"]],[24,[\\\"absence_page\\\"]],[24,[\\\"absence_limit\\\"]],\\\"aggregated.absences\\\",[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            if (!this.newWorktime?.project) {\n                return;\n            }\n        }\n        let worktime = this.openWorktime ?? this.newWorktime;\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 || !this.gps.positionFromWatch) {\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\":\"R0KrarY9\",\"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\\\",[[28,\\\"and\\\",[[23,16,[]],[23,9,[\\\"project\\\"]]],null]],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        // 'hide-dashboard-widgets' LD flag (JSON array of widget names) lets us hide widgets by default for individual services.\n        // Filtered here, not in `widgets`, so the widget stays in hidden_widgets and the user can still drag it back.\n        // Array.isArray guard: if the flag is misconfigured (wrong type), fall back to no hiding instead of crashing the dashboard.\n        const rawList = this.flags.variation('hide-dashboard-widgets', []);\n        const hideList = Array.isArray(rawList) ? rawList : [];\n        const visibleWidgets = this.widgets.filter((w) => !hideList.includes(w.name));\n        const narrow_widgets = visibleWidgets.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: visibleWidgets.filter((item) => item.wide),\n            right: narrow_widgets.slice(slice_from, narrow_widgets.length),\n            mobile: visibleWidgets.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().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        let mySitesPromise = Ember.RSVP.resolve();\n        if (projectFields.includes(this.get('filter.field')) && currentMySites.length > 0) {\n            this.set('showMySitesLabel', true);\n            this.set('showOthersLabel', true);\n            mySitesPromise = 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        const optionsPromise = this.get('Collector')\n            .findFormRelations(this.get('filter.form'), this.get('filter.field'), params)\n            .then((rows) => {\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            });\n\n        // wait for both promises before building the final array\n        return Ember.RSVP.Promise.all([mySitesPromise, optionsPromise]).then(() => {\n                const 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, limitWasPassed, 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        // EP-13302: a caller that passes an explicit `limit` attribute is authoritative — it\n        // reflects how many rows the route actually fetched. Only fall back to the stored\n        // `_defaultLimit` value when no `limit` attribute was provided, so the stored value can\n        // never clobber a passed limit (which used to hide the Summary report's pager).\n        limitWasPassed = Ember.isPresent(this.attrs && this.attrs.limit);\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 (!limitWasPassed && 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            method: 'post',\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            method: 'post',\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 seen = new Set();\n        let types = newTypes\n            .map((type) => (type.name || '').trim())\n            .filter((item) => item)\n            .filter((item) => {\n                if (seen.has(item)) return false;\n                seen.add(item);\n                return true;\n            });\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        const records = await get(this, 'store').query(\n            this.useSalarytypeV2 ? 'salarytypev2' : 'salarytype',\n            { sideload: true, limit: 'all' },\n        );\n        const seen = new Set();\n        return records.filter((record) => {\n            const name = (get(record, 'name') || '').trim();\n            if (!name || seen.has(name)) return false;\n            seen.add(name);\n            return true;\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            const seen = new Set();\n            stypes = stypes.filter((stype) => {\n                const name = (stype.name || '').trim();\n                if (seen.has(name)) return false;\n                seen.add(name);\n                return true;\n            });\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\":\"38eA2WrK\",\"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-fargate.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                method: 'post',\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 { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class VgLicensesComponent extends Component {\n    @service('vastuu-group') vastuuGroup;\n    @service evented;\n\n    get styleNamespace() {\n        return podNames['settings/general-v2/components/vg-licenses'];\n    }\n\n    @tracked isLoading = true;\n    @tracked licenses = [];\n    @tracked error = null;\n    @tracked hasCustomerId = false;\n\n    constructor() {\n        super(...arguments);\n        this.evented.on('storeEvent', this, this._onStoreEvent);\n        this.load();\n    }\n\n    willDestroy() {\n        super.willDestroy(...arguments);\n        this.evented.off('storeEvent', this, this._onStoreEvent);\n    }\n\n    _onStoreEvent({ type }) {\n        if (type === 'vastuugroupsetting') {\n            this.reload();\n        }\n    }\n\n    async reload() {\n        this.isLoading = true;\n        this.error = null;\n        this.licenses = [];\n        this.hasCustomerId = false;\n        await this.load();\n    }\n\n    async load() {\n        try {\n            const customerId = await this.vastuuGroup.getCustomerId();\n            if (!customerId) {\n                this.isLoading = false;\n                return;\n            }\n            this.hasCustomerId = true;\n            const response = await this.vastuuGroup.getCustomerLicenses(customerId);\n            if (response && response.success) {\n                this.licenses = response.data || [];\n            } else {\n                this.error = 'settings.vg_licenses.error';\n            }\n        } catch (e) {\n            this.error = 'settings.vg_licenses.error';\n        }\n        this.isLoading = false;\n    }\n\n    get licensesWithUsage() {\n        return this.licenses.map((license) => {\n            const hasUsage =\n                license.usage_amount !== null &&\n                license.usage_amount !== undefined &&\n                license.usage_tier_cap !== null &&\n                license.usage_tier_cap !== undefined;\n\n            let percentage = 0;\n\n            if (hasUsage) {\n                percentage = Math.min(\n                    Math.round((license.usage_amount / license.usage_tier_cap) * 100),\n                    100,\n                );\n            }\n\n            return {\n                ...license,\n                hasUsage,\n                percentage,\n            };\n        });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"RDOpvWbY\",\"block\":\"{\\\"symbols\\\":[\\\"license\\\",\\\"A\\\",\\\"svc\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"hasCustomerId\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[[23,0,[\\\"error\\\"]]],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not\\\",[[23,0,[\\\"licenses\\\",\\\"length\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.no_licenses\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-setting-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"licensesWithUsage\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-card\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-header\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,1,[\\\"product_name\\\"]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"hasUsage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-usage-row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-usage-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.usage\\\"],null],false],[0,\\\" \\\"],[1,[23,1,[\\\"usage_amount\\\"]],false],[0,\\\"/\\\"],[1,[23,1,[\\\"usage_tier_cap\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-bar\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[11,\\\"style\\\",[28,\\\"htmlsafe\\\",[[28,\\\"concat\\\",[\\\"width: \\\",[23,1,[\\\"percentage\\\"]],\\\"%\\\"],null]],null]],[11,\\\"aria-valuenow\\\",[29,[[23,1,[\\\"percentage\\\"]]]]],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-pct\\\"],[8],[1,[23,1,[\\\"percentage\\\"]],false],[0,\\\"%\\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-no-usage\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.usage_not_available\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[5,\\\"addon/accordion\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,2,[\\\"Item\\\"]],[],[[\\\"@showTitle\\\",\\\"@hideTitle\\\"],[[28,\\\"t\\\",[\\\"settings.vg_licenses.details\\\"],null],[28,\\\"t\\\",[\\\"settings.vg_licenses.details\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-details\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.product_family\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                                \\\"],[1,[23,1,[\\\"product_family_name\\\"]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.validity\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"start_date\\\"]],\\\"L\\\"],null],false],[0,\\\" – \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"end_date\\\"]],\\\"L\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.billing_period\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"billing_period_start_date\\\"]],\\\"L\\\"],null],false],[0,\\\" – \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"billing_period_end_date\\\"]],\\\"L\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"applicable_services\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.applicable_services\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"applicable_services\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"li\\\",true],[8],[1,[23,3,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/vg-licenses/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.vg_licenses',\n            component: 'settings/general-v2/components/vg-licenses',\n            custom: true,\n            needs: ['vastuugroupsetting'],\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\":\"odg30CR6\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"aggre-gated/rows\\\",null,[[\\\"model\\\",\\\"worktime_page\\\",\\\"absence_page\\\",\\\"worktime_limit\\\",\\\"absence_limit\\\",\\\"settings\\\",\\\"absence_settings\\\",\\\"status\\\",\\\"setRowsPerPage\\\"],[[24,[\\\"aggregatedrows\\\"]],[24,[\\\"worktime_page\\\"]],[24,[\\\"absence_page\\\"]],[24,[\\\"worktime_limit\\\"]],[24,[\\\"absence_limit\\\"]],[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                set(this, 'reservedData', null);\n                set(this, 'reservedSummary', null);\n                set(this, 'reservedData_filtered', null);\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 reservedData = [];\n\n            const fetchAbsences = async (fromDate, toDate, targetArray, type) => {\n                const dateRange = `${fromDate}_${toDate}`;\n                const order = type === 'reserved' ? 'startdate' : 'startdate-';\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=' + order,\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                                targetArray.push({\n                                    hours: format.hours(row.absence_hours),\n                                    hours_raw: parseFloat(row.absence_hours) || 0,\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: type,\n                                    addhours: false,\n                                });\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 fetchAbsences(startDate, endDate, historyData, 'absence');\n\n                // Fetch future absences for reserved section (skip on loadOlderHistory — same data)\n                if (!this.loadOlderHistory) {\n                    const tomorrow = moment().add(1, 'days').format('YYYY-MM-DD');\n                    const reservedEndDate = moment().add(6, 'years').format('YYYY-MM-DD');\n                    await fetchAbsences(tomorrow, reservedEndDate, reservedData, 'reserved');\n\n                    // Set reserved data\n                    set(this, 'reservedData', reservedData);\n\n                    // Compute summary: aggregate hours per bank\n                    const summaryMap = {};\n                    reservedData.forEach((row) => {\n                        if (!summaryMap[row.bank]) {\n                            summaryMap[row.bank] = 0;\n                        }\n                        summaryMap[row.bank] += row.hours_raw;\n                    });\n                    set(this, 'reservedSummary', Object.keys(summaryMap).map((bank) => ({\n                        bank,\n                        hours: format.hours(summaryMap[bank]),\n                    })));\n                }\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            set(this, 'reservedData_filtered', get(this, 'reservedData'));\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        // Filter reserved data by bank (type filter does not apply — all reserved are absences)\n        let reservedFiltered = get(this, 'reservedData') || [];\n        if (this.historyFilters.bank !== 'all') {\n            reservedFiltered = reservedFiltered.filter((el) => {\n                let ret = el.bank === this.historyFilters.bank;\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        set(this, 'reservedData_filtered', reservedFiltered);\n\n        // Recompute summary from filtered reserved data\n        const summaryMap = {};\n        reservedFiltered.forEach((row) => {\n            if (!summaryMap[row.bank]) {\n                summaryMap[row.bank] = 0;\n            }\n            summaryMap[row.bank] += row.hours_raw;\n        });\n        set(this, 'reservedSummary', Object.keys(summaryMap).map((bank) => ({\n            bank,\n            hours: format.hours(summaryMap[bank]),\n        })));\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\":\"kd8soB2h\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\",\\\"fields\\\",\\\"record\\\",\\\"field\\\",\\\"row\\\",\\\"columns\\\",\\\"rowActions\\\",\\\"button\\\",\\\"column\\\",\\\"row\\\",\\\"columns\\\",\\\"column\\\",\\\"item\\\",\\\"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,15,[\\\"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,15,[]],[24,[\\\"bankfields\\\"]],true,[23,16,[]],[23,17,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[16,17]},null],[0,\\\"                \\\"],[1,[23,15,[\\\"buttons\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,15,[\\\"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\\\":[15]},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,14,[\\\"name\\\"]]]]],[8],[1,[23,14,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[14]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"reservedData_filtered\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"reserved-hours-section\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.reserved_hours\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"reserved-hours-summary\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"reservedSummary\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"reserved-summary-item\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"strong\\\",true],[8],[1,[23,13,[\\\"bank\\\"]],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,13,[\\\"hours\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[13]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"data\\\",\\\"translated_columns\\\",\\\"hideSort\\\"],[[24,[\\\"showHistoryColumns\\\"]],[24,[\\\"reservedData_filtered\\\"]],[24,[\\\"translated_columns2\\\"]],true]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"tr\\\",true],[10,\\\"class\\\",\\\"reserved-row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,11,[]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,12,[]],\\\"addhours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,12,[]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"moment-format\\\",[[28,\\\"get\\\",[[23,10,[]],[23,12,[]]],null],\\\"DD.MM.YYYY\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,12,[]],\\\"hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"get\\\",[[23,10,[]],[23,12,[]]],null],false],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-warning reserved-tag\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.reserved\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"get\\\",[[23,10,[]],[23,12,[]]],null],false],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.option.deducts\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[12]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10,11]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\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' @ L152: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' @ L154: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    resetSent: false,\n    resetSentFailed: false,\n    anySent: false,\n    isSaving: 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            if (this.get('isSaving')) { return; }\n            this.set('isSaving', true);\n            var company, model, psw, username;\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, promises, sendEmail, sendSms;\n                sendEmail = this.get('by_email') && model.get('email');\n                sendSms = this.get('by_sms') && model.get('phone');\n                promises = [];\n                if (sendEmail) {\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                    promises.push(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                        dataType: 'text',\n                    }));\n                }\n                if (sendSms) {\n                    promises.push(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                return Promise.all(promises).then(() => {\n                    if (sendEmail) {\n                        this.get('notifications').success(this.get('intl').t('general.email_sent'), {\n                            autoClear: true,\n                        });\n                    }\n                    if (sendSms) {\n                        this.get('notifications').success(this.get('intl').t('general.sms_sent'), {\n                            autoClear: true,\n                        });\n                    }\n                    this.set('isSaving', false);\n                    this.set('anySent', !!(sendEmail || sendSms));\n                    this.set('resetSent', true);\n                }).catch(() => {\n                    this.set('isSaving', false);\n                    this.set('resetSentFailed', true);\n                });\n            }).catch(() => {\n                this.get('notifications').error(this.get('intl').t('changepassword.reset_error'), {\n                    autoClear: true,\n                });\n                this.set('isSaving', false);\n                this.set('showResetDialog', false);\n            });\n        },\n        removeModal: function () {\n            this.setProperties({\n                showResetDialog: false,\n                resetSent: false,\n                resetSentFailed: false,\n                anySent: false,\n                isSaving: false,\n                by_email: false,\n                by_sms: false,\n            });\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\":\"DZXYLokH\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\"],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showResetDialog\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],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\\\"],[4,\\\"if\\\",[[23,0,[\\\"resetSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[28,\\\"if\\\",[[23,0,[\\\"anySent\\\"]],\\\"changepassword.reset_success\\\",\\\"changepassword.reset_success_no_send\\\"],null]],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"resetSentFailed\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"changepassword.reset_sent_failed\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[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,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"default\\\",[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"or\\\",[[23,0,[\\\"resetSent\\\"]],[23,0,[\\\"resetSentFailed\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\",\\\"@disabled\\\"],[\\\"primary\\\",[28,\\\"action\\\",[[23,0,[]],\\\"reset_and_send\\\"],null],[23,0,[\\\"isSaving\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"]],\\\"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.trim();\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            method: 'post',\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    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    positionFromWatch: boolean;\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 positionFromWatch: boolean = false;\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                (position: any) => {\n                    this.positionFromWatch = true;\n                    this.setPosition(position);\n                },\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            this.positionFromWatch = false;\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            this.lockedPosition =\n                null;\n        this.positionFromWatch = false;\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    async getCustomerLicenses(customerIdentifier) {\n        return this.ttapi.request('api/vastuuGroupLicenses', {\n            method: 'get',\n            data: { customerIdentifier },\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\":\"kjxq4bzx\",\"block\":\"{\\\"symbols\\\":[\\\"val\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"array\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"is-duplicate\\\",[[23,1,[\\\"value\\\"]],[24,[\\\"duplicateValues\\\"]]],null],\\\"input-group has-error\\\",\\\"input-group\\\"],null]],[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\":\"HEXGzDhj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"array-input\\\",null,[[\\\"value\\\",\\\"addText\\\",\\\"duplicateValues\\\"],[[24,[\\\"value\\\"]],[24,[\\\"buttonText\\\"]],[24,[\\\"duplicateValues\\\"]]]]],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\":\"6d2ae3DJ\",\"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\\\",[[28,\\\"and\\\",[[24,[\\\"error\\\"]],[28,\\\"not\\\",[[24,[\\\"duplicateValues\\\"]]],null]],null],\\\"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\",\"MAIN_TTAPI\":\"https://api.moveniumtest.com/ttapi\",\"COLLECTOR_API_URL\":\"https://at2capi-fargate.moveniumtest.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.moveniumtest.com/ttapi\",\"TTAPI_FOLDER\":\"\",\"TTAPI\":\"https://api.moveniumtest.com/ttapi\",\"REALTTAPI\":\"https://api.moveniumtest.com/ttapi\",\"TTAPI2\":\"https://ttapi2.moveniumtest.com\",\"TT4CAPIURL\":\"https://api.moveniumtest.com\",\"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-fargate.moveniumtest.com/\",\"ENTRY_URL\":\"https://otta.moveniumtest.com/\",\"devMode\":false,\"SELFONBOARDURL\":\"https://api.moveniumtest.com/ttapi/code?code=\",\"password_recovery_callbackurl\":\"https://app.moveniumtest.com/\",\"OWN_URL\":\"https://app.moveniumtest.com/\",\"COMMANDS_URL\":\"https://5fm228o1k6.execute-api.eu-west-1.amazonaws.com/next\",\"BLOCKS_URL\":\"https://2iraovvbxk.execute-api.eu-west-1.amazonaws.com/dev\",\"GOOGLESSOURL\":null,\"VISMASSOURL\":null,\"PRODUCT_UPDATES_URL\":\"\",\"ZENDESK_KEY\":\"\",\"name\":\"tt4\",\"version\":\"1.1.56+244cde6e\",\"BUILD_TIMESTAMP\":\"2026-06-04T10:56:39.878Z\"});\n          }\n        \n"]}