{"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/retention/controller.js","tt4/pods/projects/retention/route.js","tt4/pods/projects/retention/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/retention-log/controller.js","tt4/pods/settings/retention-log/route.js","tt4/pods/settings/retention-log/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","filePreview","source","allowEdit","targetWidth","targetHeight","quality","destinationType","Camera","DestinationType","FILE_URI","sourceType","PictureSourceType","PHOTOLIBRARY","CAMERA","mediaType","MediaType","PICTURE","correctOrientation","encodingType","navigator","camera","getPicture","imageData","resolveLocalFileSystemURL","fileEntry","uploadImage","policyUrl","base64Url","_base64Url","_args2","isPublic","fetch","upload","inputs","createThumb","readAsDataURL","s3file","addFile","fileName","policyResponse","resized","thumb","imageTypes","FieldsHoursAndMinutesComponent","parseFloat","FieldsMultiselectComponent","loadInitialSelection","_this$args$options","_this$args$options2","isRecord","internalSelected","fetchOptions","groupOptions","bind","allRecords","selectedIds","mapBy","selected","unselected","groups","selectAllOption","isSelectAll","_toConsumableArray","queryLimit","filterValue","isBlank","v","trim","_records$meta","metaCount","moreCount","idsString","parseIdsFromValue","selectedRecords","some","selectAll","FieldsNumberComponent","FieldsPasswordComponent","showPassword","currentUser","company_info","FieldsSignatureComponent","canvas","createElement","width","className","signaturePad","SignaturePad","_this$signaturePad","clear","_this$signaturePad2","toDataURL","showModal","FieldsTagInputComponent","tags","tag","addTagToList","removeAt","currentInputValue","queryBackend","tagObj","tagName","_validations","validateEmail","showDropdown","result","_textarea","FieldsTextareaComponent","_touchMoving","moving","touchMoving","activeElement","blur","FieldsTextBoxComponent","FieldsTimeComponent","tryToGuessTime","str","mins","exploded","FieldsTimecleanImeiComponent","tagAsNumber","class","FieldsUsernameComponent","FieldsWeatherComponent","wspeed","percent","shouldAutomaticallyFetchNewWeather","weatherLoading","position","weather","_weather","fetchWeather","CollectorFieldsWorkPermitAttachmentComponent","FormAddComponent","_descriptor7","_descriptor8","_descriptor9","_descriptor10","_descriptor11","_descriptor12","_descriptor13","_descriptor14","_descriptor15","_descriptor16","doTheseBeforeRenderingFields","setConditionalFieldProperties","setFilters","preserveRecordOnDestroy","rollbackAttributes","_field$features","_hide","stashed","_field$features2","onFieldChange","formAddFieldChanged","changeFilter","send","saveButtonDisabled","isRecordNew","_this$analytics$custo","firstErrorElement","saving","stateBeforeSave","currentState","stateName","scrollIntoView","behavior","_saveTheChildren","save_record","analytics","customData","category","trackEvent","action","label","storeEvent","showSaved","close","savedView","rowAdded","rowEdited","surveys","initializeAndRun","ExtraInfo","_this$analytics$custo2","_this$args$close","initCustomData","filteredFields","_field$features3","_field$features4","_field$features5","_field$features6","_field$features7","_field$features8","_field$features9","_this2$args$record","_this2$args$record2","only","hide","condition","hide_tt4","_field$options","_field$features10","useForcedGpsField","default_value","getDefaultValue","sortFields","a","b","need","fieldExists","_field$features11","defaultValue","filterBy","filters","parsedFilters","getFilters","with","_this4","assign","_this5","clone","_step","_iterator","_createForOfIteratorHelper","done","_field$features12","_step2","_iterator2","_field$options2","reloadfield","err","f","_field$features13","_field$features14","_this6","conditionalFields","_item$features","_item$features4","_item$features2","_item$features5","rule","_item$features3","ruleField","isVisible","_item$features6","FormReportFiltersComponent","onclick","showFilterOptions","parentClassList","classList","contains","localStorageKey","addedFilters","hiddenFilters","templateInUse","hideAdditionalFiltersButton","allowFilters","hide_filter","splitParams","custParams","getFilterValue","values","data_name","filterOptions","getDropdownFiltteringOptions","additionalFilters","additional","getAdditionalFilters","search","groupBy","locked","row_info_status","allFields","showColumns","removable","filterArr","newArr","removableFilters","filterOrder","getIndex","findIndex","checkSearchAndGroupBy","pushObjects","customField","change","filterChangeAction","clearFilters","filterChange","_loop","fieldArr","filterIndex","translated_name","customfield","dependencies","filterField","_filterField$features","_filterField$features2","Collector","getDropdownDepency","link","_filterField$options","_filterField$options2","reloadInCurrentField","reloadInOtherField","filtering","FormReportComponent","alias","_descriptor17","_descriptor18","_descriptor19","_descriptor20","_descriptor21","_descriptor22","_descriptor23","_descriptor24","_descriptor25","_descriptor26","_descriptor27","_descriptor28","_descriptor29","_descriptor30","_descriptor31","rowsPerPage","currentPage","rowActions","selectedRows","showRemoved","useMultiFilter","showFilters","showOnlySum","changeStatusForAllPagesParams","groupableColumns","columnSizes","filteredArr","defaultOrder","setVisibleColumns","fetchTemplates","activateTemplate","setDefaultLimit","setDefaultOrder","filterByValues","updateReport","oldTemplateFromLS","columnsChanged","allColumns","col","columns","external_type","metaRowCount","allPagesSelected","formFeatures","custom_queryparams","cachedRowCount","mergeFilters","jsonapi","setJsonapiParams","extraParams","skipCustomQueryParams","checkCustomQueryParams","createSortStringForJsonapi","order","createSortString","setParentFieldParamsAsArray","canEdit","testNeeds","savedSize","column","hide_column","hideCreatedColumn","valuePath","fieldOptions","only_options","statusTypes","showOverview","formaName","underscore","formattedValues","sums","sumType","userlevels","templateValues","setProperties","save","templateColumns","current","setTemplateValues","confirm","currentFormTemplate","deactivateTemplate","showLocationMap","setMapMarkers","cacheData","handleGroupBy","showForm","act","removeRow","restoreRow","copyRow","warning","lockOrUnlock","page","_callee6","_args6","_context6","layoutOption","fileExports","createPdfFull","selectedExportRows","createPdf","notify","finish","_callee7","_context7","queryParams","_callee8","_context8","getExportData","ext","createCsv","t1","_callee9","base64","includeAllPages","sumRow","excelJSON","_args9","_context9","addFiltersToPdf","addSumRow","getExcelSumRow","createExcelJSONFromForm","createBase64ExcelFromJSON","createExcelFromJSON","exportPdf","exportPdfFull","exportExcel","saveDirtyRecords","_callee10","reportElement","dirtyRecords","reloadPromises","newData","showInlineEdit","_context10","all","_callee11","closedToApprovedRows","_context11","setParamsForStatusChangeAllPages","setDatesForFastExporter","handleClosedToApprovedRows","statusChanged","showApprovalLink","_this7","_callee12","body","_iterator3","_step3","_row","_context12","unloadRecord","row_info.status","apiservice","_callee13","to","emailData","base64string","rowids","res","_context13","getPdfAttachmentForEmail","to_address","email","lang","includeApproval","header","dontAttachImages","ok","approvalLink","addHistoryForSentRows","RowsPerPage","localStorageWrapper","setUserSetting","defaultLimitKey","defaultSortKey","_callee14","_context14","saveColumnSizeForTemplate","existingSizeObject","_callee15","_iterator4","_step4","_context15","t2","newColumns","_this8","getOrder","selectedFields","sumData","_sumrow","getSums","sumValues","isHTMLSafe","string","formReportTemplates","filter[attributes.form]","_callee16","currentLsTemplate","dateRangeOptions","normalFilters","sumFields","_this9","_context16","currentSalaryPeriod","setCurrentPeriod","entries","returnDateValue","fIndex","p","sum","startOf","endOf","_callee17","salaryPeriods","currentDate","currentPeriods","_context17","peekAll","findAll","period","period_start_date","period_end_date","_callee18","projects","_context18","getProjectInfo","visibleRowIds","requestParams","rowCount","toStatus","showFastExporter","datesForFastExporter","_callee19","mode","columnsOnReport","settings","element","elements","filters_body","_args19","_context19","show_columns","createPdfElement","table","layout","_pdfExport","createPdfFromElements","cordova","openFile","_this10","filterKeys","filterValues","filterNameInPdf","setFilterNameInPdf","filterValueInPdf","_format_","_callee20","_context20","_this11","param","_this12","visibleList","reduce","acc","columnObject","limitfromLS","getUserSetting","sortfromLS","defaultSort","createSortArray","filterUnknownColumns","allowThese","merge","getIdifRecord","removeOrNot","_callee21","_context21","isDeleted","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","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","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","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","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","retentionLoading","retentionResult","retentionError","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","retentionDryRun","Content-Type","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","ProjectsRetentionController","cutoffYear","statusId","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","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","anySent","UsersAddIndexController","hasEmail","hasPhone","resetPsw","reset_and_send","psw","email_title","i_am_this_person","own_profile","orientations_on","showOriButton","orientate","filteredLinks","_forms$form$features","use_linker","returnLinkableFields","custom_name","linkers","linkableFields","_fields$field$feature","show_in_linker","profileImgClicked","scrollToAnchor","_this$paramsFor","emptyday","notStarted","notStartedText","notCalculatedYet","day_saldo_over_max","dailySaldoCut","saldo_settings","workday_hours","cumulative","cumulative_under_min","cumulative_over_max","dayClicked","openSaldostartModal","closeSaldostartModal","saveSaldostart","showError","_refreshRoute","bankDeducerColumns","_v","absences_for_date","fullday_absences","halfday_absences","saldo_absences","bankDeductionsSum","mark_sum_zero","max_saldo_over","tmp_sum","totalsum","bank_deductions","affects_overtime_info","reportFilter","showUserDataRemover","showUserRemover","userdata","get_data","all_forms","loopYearByYear","formDateFields","loopOnce","endYear","formUserFields","formname","_loopOnce","_setFormObject","_loop2","_loopYearByYear","outer_promise","columnsObject","formObject","formData","_setFormObjectData","_createCsv","recordArr","csvFull","csvHeaders","UsersInactiveController","UsersInactiveRoute","_fetchImagesFromTv","userStatuses","showUserSmsModal","showUserEmailModal","userSmsValidPhones","userSmsNotValidPhones","userEmailValid","userEmailNotValid","showId06Checker","addRowActionSetUserPrivileges","addRowActionCheckWithTaxnumber","addRowActionCheckID06","sendUserSms","sendUserEmail","selectProjectsModalTitle","sendInvitationTo","setUserInfoFromTilaajavastuu","not_found_user","fetchAllNeededEmployers","from_class","from_text","to_class","to_text","reason_code","need_to_be_fetched","projectsmultifield","statusAction","openSmsModal","openEmailModal","fetchImagesFromTv","verifyUsersTaxnumbers","id06CheckAction","reasonCode","removeSmsModal","removeSelectProjectsModal","removeId06CheckerModal","removeTvcardCheckerModal","inviteNow","project_info","link.projects","setInviteUser","callQueue","clearThese","caller","observeFilters","_superMultiSaver","all_users","yesterday","allUserRows","saldostart","unformattedSaldo","outOffLimitsUserRows","_rows","model_user","getSaldoFor","user_startdate","make_excel_export","get_rows_to_export","get_all_users_with_saldos","dataArray","fetchPage","getQueryParamsForExport","is_on","showSaldodeducter","hideSaldodeducter","hideandreload","superMultiSaver","defaultLimit","param_value","qparams","use_limits","orientationAddController","hideAddSame","showAddOrientation","email_send_status","email_error","phone_error","sms_send_status","reset","addOrientation","editingRow","return_data","currentData","tmpEmp","tmpuser","userData","changeFormat","newDates","newstartdate","newenddate","oldstartdate","oldenddate","worktimegroupChangeController","worktypeMappings","clearStoredValues","alertShown","notification_user","alertTimeout","transformedArray","mappings","showSlowAlert","clearTimeout","showNotification","giveThumb","json_weather","addedProjects","showTheseColumns","autodiary","saveItem","addProjects","addProject","updateRatingVisualization","tmp_weather","hideFromSaved","transitionToWizard","transitionToEvents","total_workforce","work_force","workforce","workforce_arr","splitted_item","this_field","amount_own","amount_ue","field_values","work_force_rest","updateField","openEdit","addWorkforceRow","baseRoute","ue","changeThings","link_from_last","last_day","firstController","added_completions","review_options","ratefield","phaseField","update_reviews","update_rate","rate","add_item","remove_item","display_previous","enable_next","filteredPages","hide_previous","hide_next","show_modal","started_event_list","current_event_list","completed_event_list","interrupted_event_list","additional_event_list","event_type","addStatusToRecord","event_id","edit_event","show_add_event_popup","closeModalNotes","setup","GetGPSCoords","giveThumbUp","giveThumbDown","hideCloseButtons","okButtonText","backdrop","ordered_material_list","received_material_list","event_type_options","material_settings","order_date","addMaterialToRecord","material","mat","direktivController","direktivRoute","pushToModel","removeFromModel","edit_record","add_record","setSearchOption","given_offers_list","ordered_changes_list","other_entries_list","required_extra_list","currentdate","datefield","added_reviews_and_inspections","update_date","changeOverseerSignature","changeSupervisorSignature","tmp_user","supervisor_note_list","goToNext","colorFrom","calFields","multiDayFields","filteredModelOneDay","filteredModelManyDays","openWorktaskModal","openEditorAbsence","_defaultDateRange","previousWeekStart","imagesField","photos","commentsField","hoursField","hasSignature","setFixed","cleanAndMoveOn","setImages","toggleSignature","setComment","filterOwnFields","mapTasks","queryUsers","fetchWorktasks","today_show","overdueTasks","todayTasks","futureTasks","manualFormat","notes","date_formatted","est_hours_formatted","Router","locationType","ApplicationRouteMixin","metaService","toRouteInfo","translateMetaTags","updateDescription","updateTitle","_returnAllSettled","_setThings","_setLang","into","outlet","disconnectOutlet","parentView","save_first_time_loader_text","aphorisms","greeting_arr","aphorisms_arr","greetings","aphorism","getUserServices","sessionInvalidated","sessionAuthenticated","allSettled","initCurrentMySite","again","currentPassword","newPassword","additional_fields","commonfield","after_save","paramsSet","ls_key_name","next_date","prev_date","toggleCalender","setupPermission","firstPageTransition","firstPage","pageInPossibleFirstPages","searchPage","warn","password_confirm","createService","getBack","validateOnInit","convertZohoLead","sendReport","getReport","secure","authenticator","expires_in","token_type","expires_at","sentry","release","EmberIntegration","onunhandledrejection","BrowserTracing","tracesSampleRate","beforeSend","hint","sentryIsEnabled","originalException","exception","stacktrace","frames","frame","publicUrl","culprit","_json","_rest","RESTSerializer","EmbeddedRecordsMixin","embedded","deserialize","isNewSerializerAPI","extractMeta","additional_meta","serializeIntoHash","normalizeQueryResponse","primaryModelClass","requestType","camelized","inPayload","JSONAPISerializer","keyForAttribute","_ensureRegistered","setRequestHeader","_ajax","AnalyticsService","snowplow","AndroidFileService","_args","buildCameraOptions","getCameraImage","processImageFile","resolveFileSystemURL","getFileFromEntry","ApiserviceService","backendName","callUrl","worktimeGroups","worktimeGroup","worktimeGroupId","_settings2","_settings","checkIfAutopauseIsOnForWorktimeGroup","worktimegroupId","settingParams","_ajaxRequest","processData","overrideMimeType","AjaxService","authToken","BLOCKS_URL","promiseObject","injectSideload","EmberRows","CC_URL","_clock","ttapiService","addProducts","service/product","old_prod","prods_now","moduleExists","module","split_need","need_array","debugText","addLoadProfilesForUserlevels","testFormFeature","testModuleControl","testFlag","testCurrentUserField","testServiceCountry","_need$split2","_fieldandsetting$spli2","addThese","trimmed","needed_module","module_controls","company_country","invertNeeds","preLoad","getRecords","child_ext","correctFields","div","endHTML","exe_types","filethumb","fileurl","formattedHours","formattedStatus","group_by_materialgroup","image_types","len4","len5","new_val","ref7","return_str","right_ext","startHTML","statusIcon","storeData","target_field","thisIsSignature","thumburl","translatedStatus","donotaddHTML","fuckTheseEmptyDivs","innerHTML","typeKey","Type","formattedValidUntilDate","validUntil","hoursWithClock","_row$get","subTask","materialgroup","formatDropdownSums","formatCheckboxSums","isImage","fullSrc","getModalUrl","thumbUrl","sub_value","addthis","minifyLong","formattedSums","pdfSums","translatedValue","parseDropdownSums","is_summing","summing_object","temp_arr","HTMLElement","crossOrigin","paramStr","column_name","subset","subsets","asObj","PromiseArray","formatParentFormResponse","error_name","found_key","test_keys","interval_arr","skip_levels","json_record","edit_mode","json_str","CookiesService","fullList","settingsArr","setContext","dap","setLanguageMethod","setUserContext","setCompanyContext","getCustomerProduct","get_language","getProduct","userParsedData","userCreated","valueOf","customProducts","companyParsedData","serviceType","serviceCreated","product_objects","_confirm","alertify","okBtn","cancelBtn","resolvedValue","addPossibleHitsToMessage","_vastuuGroupError","stripped_message","_error$payload","response_body","errorPrefix","product_family_id","product_plan_id","lastTimeResumed","isOffline","ontime","gpsLockedPositionChanged","formatAsNumbers","excelColumns","numFmt","formatModelToJSON","formattedRow","exportFormatted","createExportFromJSON","compressed","compressAndEncodeBase64","handleResponse","jsonString","encoder","uint8Array","compressionStream","compressedStream","chunks","_yield$reader$read","compressedArray","_chunks","binary","base64String","TextEncoder","encode","CompressionStream","pipeThrough","getReader","subarray","_arguments4","includeAllRows","formattedSumrow","getStatusInfoRows","_arguments5","variation","_this$_config","clientSideId","_this$_config$streami","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":"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C,IAAMC,EAAc37D,EAAQonD,EAAIpnD;AAE5Bm7D,IAAiBvjC,EAASwvB,EAAIxvB,OAAS+jC,GAE3C77D,EAAOE,MAAQA,EACfF,EAAO83B,OAAS71C,OAAO61C;AACvB,IAAMgkC,EAAM97D,EAAO4lC,WAAW;AAE9Bk2B,MAAAA,GAAAA,EAAK91B,UAAUshB,EAAK,EAAG,EAAGpnD,EAAOje,OAAO61C,IAExCrmD,EAAQuuB,EAAOS,UAAU66D,EAAMK,MAIvCJ,EAAOH,QAAU,SAAC/xD,GACdp1B,EAAOo1B,OAaZ,SAASoyD,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,CACXuD,WAAAA,EACAhE,YAAAA,EACA4zC,gBAAAA,EACA/yC,YAAAA,EACAohE,cAAAA,EACAxhE,eAAAA;8ECjYG,SAASlG,IAAsB,IAAbmM,EAAah0B,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAL;AAC7B,OAAOmG,OAAOkqF,WAAW,+BAAiCr8D,EAAQ,OAAOs8D;AAQtE,IAAMrkE,KACE9lB,OAAO4pB,UAAU0lC,UACZjtD,QAAQ,SACb,GAAOunB,UAAU0lC,UAAU7/C,MAAM;;AASzC,IAAMsW,EACF/lB,OAAOurC,SAA+B,YAApB6+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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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 previewFile(filePreview: string) {\n        window.location.href = filePreview;\n    }\n\n    @action\n    public addMobileFile(source: string | null = null) {\n        const options = {\n            allowEdit: false,\n            targetWidth: 1600,\n            targetHeight: 1600,\n            quality: 70,\n            destinationType: Camera.DestinationType.FILE_URI,\n            sourceType:\n                source === 'gallery'\n                    ? Camera.PictureSourceType.PHOTOLIBRARY\n                    : Camera.PictureSourceType.CAMERA,\n            mediaType: Camera.MediaType.PICTURE,\n            correctOrientation: true,\n            encodingType: 0,\n        };\n        // mega monster upload from device camera\n        navigator.camera.getPicture(\n            (imageData: any) => {\n                window.resolveLocalFileSystemURL(\n                    imageData,\n                    (fileEntry: any) => {\n                        fileEntry.file((file: any) => {\n                            (file.type = 'image/jpeg'),\n                                (file.name = file.name.replace(\n                                    'image.',\n                                    'image' + moment().format('YYYY-MM-DD-hh-mm-ss') + '.',\n                                )); /*tslint:disable-line*/\n                            this.uploadImage({\n                                blob: file,\n                                name: file.name,\n                                type: file.type,\n                            } as IFile);\n                        });\n                    },\n                    (error: any) => {\n                        throw new Error(error);\n                    },\n                );\n            },\n            (message: any) => {\n                throw new Error(message);\n            },\n            options,\n        );\n    }\n    @action\n    private addFile(file: IFile) {\n        const vals = this.value;\n        vals.pushObject({\n            name: file.name,\n            name_on_hd: file.name_on_hd,\n            type: file.type,\n        });\n        this.args.onChange(vals);\n    }\n\n    private async uploadFile(file: IFile, isImageType: boolean = false): Promise<void> {\n        let policyUrl = '/awsurl?filename=' + file.name + '&format=policy';\n        if (this.isPublic) policyUrl += '&public=true';\n        if (isImageType) policyUrl += '&thumb=true';\n\n        try {\n            const req = await fetch(this.capiURL + policyUrl, {\n                headers: {\n                    Authorization: 'Bearer ' + this.session.data.authenticated.access_token,\n                },\n            });\n            const response = (await req.json()) as any;\n\n            const task = file.upload(response.url!, {\n                data: response.inputs,\n            });\n\n            if (isImageType) {\n                this.createThumb(file.name, file.type, file.blob, response);\n                const base64Url = await file.readAsDataURL();\n                this.base64ImageCache[response.s3file] = base64Url;\n            } else {\n                const base64Url = await file.readAsDataURL();\n                this.base64Cache[response.s3file] = base64Url;\n            }\n\n            await task;\n            file.task = task;\n            file.name_on_hd = response.s3file;\n\n            this.addFile(file);\n        } catch (e) {\n            alert('upload failed');\n        }\n    }\n\n    private async createThumb(\n        fileName: string,\n        type: string,\n        blob: Blob,\n        policyResponse: any,\n    ): Promise<string> {\n        const resized = await resizeImage(blob);\n        const resizedImageFile = File.fromDataURL(resized);\n        resizedImageFile.name = fileName;\n        resizedImageFile.type = type;\n        resizedImageFile.upload(policyResponse.thumb.url, {\n            data: policyResponse.thumb.inputs,\n        });\n        return resizedImageFile;\n    }\n\n    private isImageType(type: string): boolean {\n        return imageTypes.includes(type);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div>\\n    <Input\\n        @type='number'\\n        @min='0'\\n        @name={{concat @name '-hours'}}\\n        @class='hours-and-minutes'\\n        @focus-out={{fn this.changeHours}}\\n        {{on 'focus' this.selectAll}}\\n        @value={{readonly this.hours}}\\n        @disabled={{@disabled}}\\n    />\\n    {{t 'general.hour_abbr'}}\\n    <Input\\n        @type='number'\\n        @min='0'\\n        @max='59'\\n        @name={{concat @name '-minutes'}}\\n        @class='hours-and-minutes'\\n        @focus-out={{fn this.changeMinutes}}\\n        {{on 'focus' this.selectAll}}\\n        @value={{readonly this.minutes}}\\n        @disabled={{@disabled}}\\n    />\\n    {{t 'general.min_abbr'}}\\n</div>\", {\"contents\":\"<div>\\n    <Input\\n        @type='number'\\n        @min='0'\\n        @name={{concat @name '-hours'}}\\n        @class='hours-and-minutes'\\n        @focus-out={{fn this.changeHours}}\\n        {{on 'focus' this.selectAll}}\\n        @value={{readonly this.hours}}\\n        @disabled={{@disabled}}\\n    />\\n    {{t 'general.hour_abbr'}}\\n    <Input\\n        @type='number'\\n        @min='0'\\n        @max='59'\\n        @name={{concat @name '-minutes'}}\\n        @class='hours-and-minutes'\\n        @focus-out={{fn this.changeMinutes}}\\n        {{on 'focus' this.selectAll}}\\n        @value={{readonly this.minutes}}\\n        @disabled={{@disabled}}\\n    />\\n    {{t 'general.min_abbr'}}\\n</div>\",\"moduleName\":\"tt4/components/addon/fields/hours.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/hours.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action, notifyPropertyChange } from '@ember/object';\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\n\ninterface IHoursAndMinutes {\n    value: string;\n    onChange(args0: string): void;\n}\n\nexport default class FieldsHoursAndMinutesComponent extends Component<IHoursAndMinutes> {\n    get isMobile(): boolean {\n        return isMobile();\n    }\n\n    // select all numbers in input\n    @action\n    public selectAll(event: Event): void {\n        const target = event.target as HTMLInputElement;\n        target.select();\n    }\n\n    @action\n    public changeHours(value: string): void {\n        let val = parseInt(value, 10);\n\n        if (isNaN(val)) val = 0;\n\n        if (val < 0) val = 0;\n\n        if (val < 10) {\n            value = '0' + val;\n        }\n\n        const minutes = this.minutes || '00';\n\n        this.args.onChange(value + ':' + minutes);\n        notifyPropertyChange(this, 'hours');\n    }\n\n    @action\n    public changeMinutes(value: string): void {\n        let val = parseInt(value, 10);\n\n        if (isNaN(val)) val = 0;\n\n        if (val < 0 || val > 59) val = 0;\n\n        if (val < 10) {\n            value = '0' + val;\n        }\n\n        const hours = this.hours || '00';\n\n        this.args.onChange(hours + ':' + value);\n        notifyPropertyChange(this, 'minutes');\n    }\n\n    get hours(): string | null {\n        if (!this.args.value) return null;\n        if (this.args.value.toString().includes(':')) {\n            return this.args.value?.split(':')[0];\n        } else {\n            return Math.floor(parseInt(this.args.value, 10)).toString();\n        }\n    }\n\n    get minutes(): string | null {\n        if (!this.args.value) return null;\n        if (this.args.value.toString().includes(':')) {\n            return this.args.value?.split(':')[1];\n        } else {\n            const minutes = Math.round((parseFloat(this.args.value) % 1) * 60);\n            return minutes < 10 ? '0' + minutes.toString() : minutes.toString();\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/minutes.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/minutes.hbs\"}});\nimport FieldsPriceComponent from './price';\n\nexport default class FieldsBigPriceComponent extends FieldsPriceComponent {\n    get unit(): string | null {\n        return 'min';\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if @moreCount}}\\n    <div class=\\\"ember-power-select-option power-select-footer\\\">\\n        {{t \\\"select.more\\\"}}\\n    </div>\\n{{/if}}\\n\", {\"contents\":\"{{#if @moreCount}}\\n    <div class=\\\"ember-power-select-option power-select-footer\\\">\\n        {{t \\\"select.more\\\"}}\\n    </div>\\n{{/if}}\\n\",\"moduleName\":\"tt4/components/addon/fields/multiselect-after-options.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/multiselect-after-options.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<PowerSelectMultiple\\n    @class={{@class}}\\n    @name={{@name}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @tagName=\\\"div\\\"\\n    @allowClear={{true}}\\n    @selected={{this.selected}}\\n    @preventScroll={{true}}\\n    @placeholder={{this.placeholder}}\\n    @options={{this.options}}\\n    @loadingMessage={{t \\\"general.loading\\\"}}\\n    @disabled={{or @disabled this.disabled}}\\n    @searchEnabled={{true}}\\n    @search={{fn this.search}}\\n    @afterOptionsComponent={{component \\\"addon/fields/multiselect-after-options\\\" moreCount=this.moreCount}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    @onChange={{this.onChange}} as |record|>\\n    {{#if record.isSelectAll}}\\n        <span style=\\\"font-style: italic; color: grey;\\\">{{record.text}}</span>\\n    {{else}}\\n        {{#each this.subformFields as |field|}}\\n            {{get record field}}\\n        {{/each}}\\n    {{/if}}\\n</PowerSelectMultiple>\", {\"contents\":\"<PowerSelectMultiple\\n    @class={{@class}}\\n    @name={{@name}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @tagName=\\\"div\\\"\\n    @allowClear={{true}}\\n    @selected={{this.selected}}\\n    @preventScroll={{true}}\\n    @placeholder={{this.placeholder}}\\n    @options={{this.options}}\\n    @loadingMessage={{t \\\"general.loading\\\"}}\\n    @disabled={{or @disabled this.disabled}}\\n    @searchEnabled={{true}}\\n    @search={{fn this.search}}\\n    @afterOptionsComponent={{component \\\"addon/fields/multiselect-after-options\\\" moreCount=this.moreCount}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    @onChange={{this.onChange}} as |record|>\\n    {{#if record.isSelectAll}}\\n        <span style=\\\"font-style: italic; color: grey;\\\">{{record.text}}</span>\\n    {{else}}\\n        {{#each this.subformFields as |field|}}\\n            {{get record field}}\\n        {{/each}}\\n    {{/if}}\\n</PowerSelectMultiple>\",\"moduleName\":\"tt4/components/addon/fields/multiselect.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/multiselect.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action, get, computed } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { debounce } from '@ember/runloop';\nimport { isPresent, isBlank } from '@ember/utils';\nimport { A } from '@ember/array';\nimport { IOptions } from 'tt4/ember-movenium/interfaces/forms';\n\ninterface FieldsMultiselectArgs {\n\tclass?: string;\n\tname: string;\n\tform: string;\n\toptions: IOptions;\n\tvalue?: any;\n\tdisabled?: boolean;\n\tprompt?: any;\n\tmodel?: { [key: string]: any };\n\tfilter?: { [key: string]: any } | null;\n\tonChange(value: string[] | null): void;\n}\n\nexport default class FieldsMultiselectComponent extends Component<FieldsMultiselectArgs> {\n\n\t@service declare store: any;\n\t@service declare intl: any;\n\n\t@tracked internalSelected: any = A([]);\n\t@tracked disabled = false;\n\t@tracked isopen = false;\n\t@tracked moreCount: number | null = null;\n\n\tconstructor(owner: any, args: FieldsMultiselectArgs) {\n\t\tsuper(owner, args);\n\t\tthis.loadInitialSelection();\n\t}\n\n\tget subform() {\n\t\treturn this.args.options?.form || '';\n\t}\n\n\tget subformFields() {\n\t\treturn this.args.options?.fields || [];\n\t}\n\n\tget placeholder(): string | null {\n\t\treturn this.args.prompt ? this.intl.t(this.args.prompt) : null;\n\t}\n\n\tget selected() {\n\t\tconst value = this.args.value;\n\t\tconst isRecordArray = Array.isArray(value) && isPresent(value) && this.isRecord(value[0]);\n\t\treturn isRecordArray ? value : this.internalSelected;\n\t}\n\n\tget queryLimit(): number {\n\t\treturn 100;\n\t}\n\n\t// Cache promise to avoid repeated backend queries on each render\n\t// Invalidates when filter or selected items change\n\t@computed('subform', 'args.filter', 'internalSelected.[]')\n\tget options(): Promise<any> {\n\t\treturn this.fetchOptions(null).then(this.groupOptions.bind(this));\n\t}\n\n\tisRecord(item: any): boolean {\n\t\treturn typeof item === 'object' && item && 'id' in item;\n\t}\n\n\t// Group options into \"Selected\" and \"Unselected\" categories for dropdown display\n\tgroupOptions(records: any) {\n\t\tif (!records?.toArray) return [];\n\n\t\tconst allRecords = records.toArray();\n\t\tconst selectedIds = this.internalSelected.mapBy('id');\n\n\t\tconst selected = allRecords.filter((record: any) => selectedIds.includes(record.id));\n\t\tconst unselected = allRecords.filter((record: any) => !selectedIds.includes(record.id));\n\n\t\tconst groups = [];\n\n\t\tif (isPresent(selected)) {\n\t\t\tgroups.push({\n\t\t\t\tgroupName: this.intl.t('select.selected'),\n\t\t\t\toptions: selected\n\t\t\t});\n\t\t}\n\n\t\tif (isPresent(unselected)) {\n\t\t\t// Add \"Select All\" option at the beginning of unselected group\n\t\t\tconst selectAllOption = {\n\t\t\t\tid: '__select_all__',\n\t\t\t\tisSelectAll: true,\n\t\t\t\ttext: this.intl.t('select.select_all')\n\t\t\t};\n\n\t\t\tgroups.push({\n\t\t\t\tgroupName: this.intl.t('select.unselected'),\n\t\t\t\toptions: [selectAllOption, ...unselected]\n\t\t\t});\n\t\t}\n\n\t\treturn groups;\n\t}\n\n\tcreateQueryParams(term: string | null = null, id: string | null = null) {\n\t\tconst params: any = {\n\t\t\tform: this.args.form,\n\t\t\tfield: this.args.name,\n\t\t\tlimit: this.queryLimit,\n\t\t\toffset: 0,\n\t\t};\n\n\t\tif (isPresent(id)) params.id = id;\n\t\tif (isPresent(term)) params.q = term;\n\n\t\t// Add filter parameters if present\n\t\tif (isPresent(this.args.filter)) {\n\t\t\tObject.keys(this.args.filter || {}).forEach((key) => {\n\t\t\t\tconst filterValue = (this.args.filter || {})[key];\n\t\t\t\tif (isPresent(filterValue)) {\n\t\t\t\t\tparams[key] = typeof filterValue === 'string' ? filterValue : get(filterValue, 'id');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn params;\n\t}\n\n\t// Convert value (array of ids or string) to comma-separated format for backend query\n\tparseIdsFromValue(value: any): string | null {\n\t\tif (isBlank(value)) return null;\n\n\t\tif (Array.isArray(value)) {\n\t\t\tconst ids = value.map((v) => String(v || '')).filter(isPresent);\n\t\t\treturn ids.length ? ids.join(',') : null;\n\t\t}\n\n\t\tif (typeof value === 'string') {\n\t\t\treturn isBlank(value.trim()) ? null : value;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tasync fetchOptions(term: string | null) {\n\t\tif (this.args.filter && !term) {\n\t\t\tthis.disabled = true;\n\t\t}\n\n\t\tconst records = await this.store.query(this.subform, this.createQueryParams(term));\n\t\tconst metaCount = records?.meta?.count;\n\t\tthis.moreCount =\n\t\t\tmetaCount > this.queryLimit\n\t\t\t\t? metaCount - this.queryLimit\n\t\t\t\t: null;\n\t\tthis.disabled = false;\n\n\t\treturn records;\n\t}\n\n\tasync loadInitialSelection(): Promise<void> {\n\t\tconst value = this.args.value;\n\n\t\t// If caller already provides selected record objects, use them directly\n\t\tif (Array.isArray(value) && isPresent(value) && this.isRecord(value[0])) {\n\t\t\tthis.internalSelected = A(value);\n\t\t\treturn;\n\t\t}\n\n\t\t// Parse ids and fetch corresponding records from backend\n\t\tconst idsString = this.parseIdsFromValue(value);\n\t\tif (isBlank(idsString)) {\n\t\t\tthis.internalSelected = A([]);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst records = await this.store.query(this.subform, this.createQueryParams(null, idsString));\n\t\t\tthis.internalSelected = A(records?.toArray ? records.toArray() : records);\n\t\t} catch (e) {\n\t\t\tthis.internalSelected = A([]);\n\t\t}\n\t}\n\n\t@action\n\tsearch(term: string) {\n\t\treturn new Promise((resolve) => {\n\t\t\tdebounce(this, this.performSearch, term, resolve, 600);\n\t\t});\n\t}\n\n\tasync performSearch(term: string, resolve: (value: any) => void) {\n\t\tconst records = await this.fetchOptions(term);\n\t\tresolve(this.groupOptions(records));\n\t}\n\n\tasync selectAll() {\n\t\tconst records = await this.fetchOptions(null);\n\t\treturn records.toArray ? records.toArray() : records;\n\t}\n\n\t@action\n\tasync onChange(value: any) {\n\t\t// Handle \"Select All\" by fetching and selecting all available options\n\t\tconst hasSelectAll = Array.isArray(value) && value.some((item: any) => item.isSelectAll);\n\t\tif (hasSelectAll) {\n\t\t\tvalue = await this.selectAll();\n\t\t}\n\n\t\t// Filter out \"Select All\" option and update internal state\n\t\tconst selectedRecords = Array.isArray(value)\n\t\t\t? value.filter((item: any) => !item.isSelectAll)\n\t\t\t: [];\n\t\tthis.internalSelected = A(selectedRecords);\n\n\t\t// Extract ids and notify parent\n\t\tconst ids = this.internalSelected.mapBy('id').filter(isPresent);\n\t\tconst payload = isPresent(ids) ? ids : null;\n\n\t\tif (this.args.model && this.args.name) {\n\t\t\tthis.args.model[this.args.name] = payload;\n\t\t}\n\n\t\treturn this.args.onChange(payload);\n\t}\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if field.type}}\\n    {{t \\\"field.not_supported\\\" fieldtype=field.type}}\\n{{/if}}\\n\", {\"contents\":\"{{#if field.type}}\\n    {{t \\\"field.not_supported\\\" fieldtype=field.type}}\\n{{/if}}\\n\",\"moduleName\":\"tt4/components/addon/fields/not-supported.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/not-supported.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{@options}}</span>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{@options}}</span>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/number.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/number.hbs\"}});\nimport Component from '@glimmer/component';\n\nexport default class FieldsNumberComponent extends Component {}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Input\\n    @type={{if this.showPassword \\\"text\\\" \\\"password\\\"}}\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n    @disabled={{not this.showPassword}}\\n/>\", {\"contents\":\"<Input\\n    @type={{if this.showPassword \\\"text\\\" \\\"password\\\"}}\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n    @disabled={{not this.showPassword}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/password.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/password.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\ninterface PasswordInputArgs {\n  value: string;\n}\n\nexport default class FieldsPasswordComponent extends Component<PasswordInputArgs> {\n    @tracked showPassword: boolean = false;\n\n    constructor(owner: unknown, args: PasswordInputArgs) {\n        super(owner, args);\n        // Determine if the password should be shown based on its length or if its value is 'secured' (which is the password value for existing users)\n        this.showPassword = args.value.length > 6 || args.value === 'secured' ? false : true;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/price.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/price.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\n\nexport default class FieldsPriceComponent extends Component {\n    @service private session: any;\n\n    get unit(): string | null {\n        if (this.session.currentUser.company_info.country === 'fi') return '€';\n        else if (this.session.currentUser.company_info.country === 'se') return 'SEK';\n        else return null;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-flex-button-group-container\\\">\\n    {{#each @options as |option index|}}\\n        {{#if (eq @name \\\"affects_overtime\\\")}}\\n            <span role=\\\"button\\\" class=\\\"ember-movenium-flex-button-group-item-small ember-movenium-flex-button-modal {{if (is-equal option @value) 'ember-movenium-flex-button-group-item-small-selected'}}\\\"\\n                name={{concat @name '-' index}} {{on 'click' (fn @onChange option)}}>{{#if (is-equal option @value)}}<span class=\\\"ember-movenium-checkmark\\\"></span>{{/if}}{{t (concat @form '.' @name '.' option)}}</span>\\n        {{else}}\\n            <button type=\\\"button\\\" name={{concat @name '-' index}} class=\\\"ember-movenium-flex-button-group-item {{concat 'radio-button-' @form '-' index}} {{if (is-equal option @value) 'ember-movenium-flex-button-group-selected'}}\\\" {{on 'click' (fn @onChange option)}}>{{#if (is-equal option @value)}}<span class=\\\"ember-movenium-checkmark\\\"></span> {{/if}}{{collector-value-format value=option form=@form field=@name}}</button>\\n        {{/if}}\\n    {{/each}}\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-flex-button-group-container\\\">\\n    {{#each @options as |option index|}}\\n        {{#if (eq @name \\\"affects_overtime\\\")}}\\n            <span role=\\\"button\\\" class=\\\"ember-movenium-flex-button-group-item-small ember-movenium-flex-button-modal {{if (is-equal option @value) 'ember-movenium-flex-button-group-item-small-selected'}}\\\"\\n                name={{concat @name '-' index}} {{on 'click' (fn @onChange option)}}>{{#if (is-equal option @value)}}<span class=\\\"ember-movenium-checkmark\\\"></span>{{/if}}{{t (concat @form '.' @name '.' option)}}</span>\\n        {{else}}\\n            <button type=\\\"button\\\" name={{concat @name '-' index}} class=\\\"ember-movenium-flex-button-group-item {{concat 'radio-button-' @form '-' index}} {{if (is-equal option @value) 'ember-movenium-flex-button-group-selected'}}\\\" {{on 'click' (fn @onChange option)}}>{{#if (is-equal option @value)}}<span class=\\\"ember-movenium-checkmark\\\"></span> {{/if}}{{collector-value-format value=option form=@form field=@name}}</button>\\n        {{/if}}\\n    {{/each}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/radio.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/radio.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div role=\\\"button\\\" {{on 'click' (fn (mut this.showModal) true)}} class=\\\"ember-movenium-signature {{if @value 'ember-movenium-signature-success'}}\\\" >\\n    {{t 'field.signature.placeholder'}}\\n    {{#if @value}}\\n        <img class=\\\"ember-movenium-signature-preview\\\" src={{this.signatureSrc}} alt={{t 'field.signature.placeholder'}} />\\n        <span class=\\\"ember-movenium-checkmark\\\"></span>\\n    {{/if}}\\n</div>\\n\\n{{#if this.showModal}}\\n    <ModalDialog\\n        @onClose={{fn (mut this.showModal) false}}\\n        @wrapperClassNames=\\\"ember-movenium-signature-dialog\\\"\\n        @translucentOverlay={{true}}\\n        @overlayPosition=\\\"sibling\\\"\\n    >\\n        <div class=\\\"ember-movenium-modal-dialog-header\\\">\\n            <h4>{{t 'modal.signature.title'}}</h4>\\n            <Addon::Icons::Close @onClick={{fn (mut this.showModal) false}} />\\n        </div>\\n\\n        <div class=\\\"ember-movenium-modal-dialog-content\\\">\\n            {{this.canvas}}\\n        </div>\\n\\n        <div class=\\\"ember-movenium-modal-dialog-footer\\\">\\n            <button type=\\\"button\\\" {{on 'click' this.clear}} class=\\\"ember-movenium-button ember-movenium-clear-button\\\"> {{t 'modal.clear'}} </button>\\n            <button type=\\\"button\\\" {{on 'click' this.save}} class=\\\"ember-movenium-button ember-movenium-save-button\\\"> {{t 'modal.ok'}} </button>\\n        </div>\\n    </ModalDialog>\\n{{/if}}\", {\"contents\":\"<div role=\\\"button\\\" {{on 'click' (fn (mut this.showModal) true)}} class=\\\"ember-movenium-signature {{if @value 'ember-movenium-signature-success'}}\\\" >\\n    {{t 'field.signature.placeholder'}}\\n    {{#if @value}}\\n        <img class=\\\"ember-movenium-signature-preview\\\" src={{this.signatureSrc}} alt={{t 'field.signature.placeholder'}} />\\n        <span class=\\\"ember-movenium-checkmark\\\"></span>\\n    {{/if}}\\n</div>\\n\\n{{#if this.showModal}}\\n    <ModalDialog\\n        @onClose={{fn (mut this.showModal) false}}\\n        @wrapperClassNames=\\\"ember-movenium-signature-dialog\\\"\\n        @translucentOverlay={{true}}\\n        @overlayPosition=\\\"sibling\\\"\\n    >\\n        <div class=\\\"ember-movenium-modal-dialog-header\\\">\\n            <h4>{{t 'modal.signature.title'}}</h4>\\n            <Addon::Icons::Close @onClick={{fn (mut this.showModal) false}} />\\n        </div>\\n\\n        <div class=\\\"ember-movenium-modal-dialog-content\\\">\\n            {{this.canvas}}\\n        </div>\\n\\n        <div class=\\\"ember-movenium-modal-dialog-footer\\\">\\n            <button type=\\\"button\\\" {{on 'click' this.clear}} class=\\\"ember-movenium-button ember-movenium-clear-button\\\"> {{t 'modal.clear'}} </button>\\n            <button type=\\\"button\\\" {{on 'click' this.save}} class=\\\"ember-movenium-button ember-movenium-save-button\\\"> {{t 'modal.ok'}} </button>\\n        </div>\\n    </ModalDialog>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/signature.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/signature.hbs\"}});\nimport Component from '@glimmer/component';\nimport SignaturePad from 'signature_pad';\nimport config from 'tt4/config/environment';\nimport { isArray } from '@ember/array';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\ninterface ISignatureField {\n    signatureSrc: string;\n    value: string | [{ url: string }] | { url: string } | null;\n    onChange(args0: string | null): void;\n}\n\nexport default class FieldsSignatureComponent extends Component<ISignatureField> {\n    protected signaturePad: SignaturePad | null = null;\n    protected canvas: HTMLCanvasElement;\n    @tracked protected showModal: boolean = false;\n\n    constructor(owner: unknown, args: ISignatureField) {\n        super(owner, args);\n        const canvas = document.createElement('canvas');\n        canvas.width = 475;\n        canvas.className = 'ember-movenium-signature-canvas';\n\n        this.signaturePad = new SignaturePad(canvas);\n        this.canvas = canvas;\n    }\n\n    get signatureSrc(): string | null {\n        this.signaturePad?.clear();\n        if (!this.args.value) return null;\n        if (typeof this.args.value === 'string') return this.args.value;\n        else if (isArray(this.args.value))\n            return config.APP.COLLECTOR_API_URL + '/' + this.args.value[0].url;\n        else return config.APP.COLLECTOR_API_URL + '/' + this.args.value.url;\n    }\n\n    @action\n    protected clear(): void {\n        this.signaturePad?.clear();\n    }\n\n    @action\n    protected save(): void {\n        if (this.signaturePad!.isEmpty()) this.args.onChange(null);\n        else this.args.onChange(this.signaturePad!.toDataURL());\n        this.showModal = false;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<TagInput\\n  @tags={{@value}}\\n  @addTag={{fn this.addTag}}\\n  @removeTagAtIndex={{fn this.removeTagAtIndex}}\\n  @onKeyUp={{fn this.queryForUser}}\\n  as |tag|>\\n    <span class={{if tag.error \\\"error\\\"}}>{{tag.tagName}}</span>\\n</TagInput>\\n{{#if this.showDropdown}}\\n    {{#if this.options.length}}\\n        <div class=\\\"ajax-select\\\">\\n            <div class=\\\"options\\\" id=\\\"tag-list-dropdown\\\">\\n                <ul>\\n                    {{#each this.options as |opt|}}\\n                        <li role=\\\"button\\\" {{on \\\"click\\\" (fn this.addTag opt)}}>\\n                            {{opt}}\\n                        </li>\\n                    {{/each}}\\n                </ul>\\n            </div>\\n        </div>\\n    {{/if}}\\n{{/if}}\", {\"contents\":\"<TagInput\\n  @tags={{@value}}\\n  @addTag={{fn this.addTag}}\\n  @removeTagAtIndex={{fn this.removeTagAtIndex}}\\n  @onKeyUp={{fn this.queryForUser}}\\n  as |tag|>\\n    <span class={{if tag.error \\\"error\\\"}}>{{tag.tagName}}</span>\\n</TagInput>\\n{{#if this.showDropdown}}\\n    {{#if this.options.length}}\\n        <div class=\\\"ajax-select\\\">\\n            <div class=\\\"options\\\" id=\\\"tag-list-dropdown\\\">\\n                <ul>\\n                    {{#each this.options as |opt|}}\\n                        <li role=\\\"button\\\" {{on \\\"click\\\" (fn this.addTag opt)}}>\\n                            {{opt}}\\n                        </li>\\n                    {{/each}}\\n                </ul>\\n            </div>\\n        </div>\\n    {{/if}}\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/tag-input.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/tag-input.hbs\"}});\nimport Component from '@glimmer/component';\nimport { validateEmail } from 'tt4/ember-movenium/utils/validations';\nimport DS from 'ember-data';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { debounce } from '@ember/runloop';\nimport { A } from '@ember/array';\nimport MutableArray from '@ember/array/mutable';\n\ninterface ITagInput {\n    form: string;\n    field: string;\n    name: string;\n    value?: string[];\n    onChange(arg0: MutableArray<ITag | string> | string): void;\n}\n\ninterface ITag {\n    tagName: string;\n    error: boolean;\n    removeAt(args0: number): void;\n}\n\nexport default class FieldsTagInputComponent extends Component<ITagInput> implements ITagInput {\n    @tracked public showDropdown: boolean = false;\n    @tracked public tags: MutableArray<ITag | string> = A([]);\n    @tracked public options: MutableArray<string> = A([]);\n    @service declare store: DS.Store;\n\n    constructor(owner: unknown, args: ITagInput) {\n        super(owner, args);\n    }\n\n    get form() {\n        return this.args.form;\n    }\n\n    get field() {\n        return this.args.field;\n    }\n\n    get name() {\n        return this.args.name;\n    }\n\n    @action public onChange(tags: MutableArray<ITag | string>) {\n        return this.args.onChange(tags);\n    }\n\n    @action public addTag(tag: string) {\n        debounce(this, this.addTagToList, tag, 120);\n    }\n\n    @action public removeTagAtIndex(index: number) {\n        this.tags.removeAt(index);\n        this.args.onChange(this.tags as MutableArray<ITag>);\n    }\n\n    @action public queryForUser(currentInputValue: string) {\n        if (currentInputValue === '') return;\n        debounce(this, this.queryBackend, currentInputValue, 700);\n    }\n\n    protected addTagToList(tag: string) {\n        const tagObj = {\n            tagName: tag,\n            error: !validateEmail(tag),\n        } as ITag;\n        this.showDropdown = false;\n        this.tags.pushObject(tagObj as ITag);\n        this.onChange(this.tags as MutableArray<ITag>);\n    }\n\n    private async queryBackend(currentInputValue: string) {\n        this.showDropdown = false;\n        if (!this.form) return;\n        this.options = A([]);\n        const query = await this.store.query(this.form, { q: currentInputValue });\n        this.showDropdown = true;\n        query.forEach((result) => {\n            if (result[this.field]) {\n                this.options.pushObject(result[this.field]);\n            }\n        });\n    }\n}\n","define(\"tt4/components/addon/fields/textarea-varchar\", [\"exports\", \"tt4/components/addon/fields/textarea\"], function (_exports, _textarea) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _textarea.default;\n    }\n  });\n});\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Textarea\\n    @rows={{4}}\\n    @cols={{8}}\\n    @class={{@class}}\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @touchMove={{this.touchMoveAction}}\\n    @touchEnd={{this.touchEndAction}}\\n    {{on 'change' (fn @onChange @value)}}\\n    {{on 'keyup' (fn @onChange @value)}}\\n/>\", {\"contents\":\"<Textarea\\n    @rows={{4}}\\n    @cols={{8}}\\n    @class={{@class}}\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @touchMove={{this.touchMoveAction}}\\n    @touchEnd={{this.touchEndAction}}\\n    {{on 'change' (fn @onChange @value)}}\\n    {{on 'keyup' (fn @onChange @value)}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/textarea.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/textarea.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { debounce } from '@ember/runloop';\n/* istanbul ignore next */\nexport default class FieldsTextareaComponent extends Component {\n    private _touchMoving: boolean = false;\n\n    set touchMoving(moving: boolean) {\n        this._touchMoving = moving;\n    }\n\n    get touchMoving(): boolean {\n        return this._touchMoving;\n    }\n\n    @action\n    protected touchMoveAction() {\n        debounce(this, () => (this.touchMoving = true), 50);\n    }\n\n    @action\n    protected touchEndAction() {\n        if (this.touchMoving) {\n            this.touchMoving = false;\n            (document.activeElement as HTMLElement).blur();\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Input\\n    @type=\\\"text\\\"\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    @disabled={{@disabled}}\\n    @touchMove={{this.touchMoveAction}}\\n    @touchEnd={{this.touchEndAction}}\\n    {{on \\\"change\\\" (fn @onChange @value)}}\\n    @placeholder={{@placeholder}}\\n/>\", {\"contents\":\"<Input\\n    @type=\\\"text\\\"\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    @disabled={{@disabled}}\\n    @touchMove={{this.touchMoveAction}}\\n    @touchEnd={{this.touchEndAction}}\\n    {{on \\\"change\\\" (fn @onChange @value)}}\\n    @placeholder={{@placeholder}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/textbox.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/textbox.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { debounce } from '@ember/runloop';\n\ninterface ITextbox {\n    value: string;\n}\n\n/**\n    Textbox field\n    @class FieldsTextBoxComponent\n*/\n/* istanbul ignore next */\nexport default class FieldsTextBoxComponent extends Component<ITextbox> {\n    private _touchMoving: boolean = false;\n\n    set touchMoving(moving: boolean) {\n        this._touchMoving = moving;\n    }\n\n    get touchMoving(): boolean {\n        return this._touchMoving;\n    }\n\n    @action\n    protected touchMoveAction() {\n        debounce(\n            this,\n            () => {\n                this.touchMoving = true;\n            },\n            50,\n        );\n    }\n\n    @action\n    protected touchEndAction() {\n        if (this.touchMoving) {\n            this.touchMoving = false;\n            (document.activeElement as HTMLElement).blur();\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if this.isMobile}}\\n    <Input @type=\\\"time\\\" @value={{@value}} @disabled={{@disabled}} {{on 'change' (fn @onChange @value)}} />\\n{{else}}\\n    <Input\\n        @class=\\\"max-width-5em\\\"\\n        @type=\\\"text\\\"\\n        @autocomplete=\\\"off\\\"\\n        @value={{@value}}\\n        @disabled={{@disabled}}\\n        @focus-in={{this.select}}\\n        @focus-out={{fn this.timefy @value}}\\n        @enter={{fn this.timefy @value}}\\n    />\\n{{/if}}\", {\"contents\":\"{{#if this.isMobile}}\\n    <Input @type=\\\"time\\\" @value={{@value}} @disabled={{@disabled}} {{on 'change' (fn @onChange @value)}} />\\n{{else}}\\n    <Input\\n        @class=\\\"max-width-5em\\\"\\n        @type=\\\"text\\\"\\n        @autocomplete=\\\"off\\\"\\n        @value={{@value}}\\n        @disabled={{@disabled}}\\n        @focus-in={{this.select}}\\n        @focus-out={{fn this.timefy @value}}\\n        @enter={{fn this.timefy @value}}\\n    />\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/time.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/time.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\n\n/**\n    Time field\n    @class FieldsTimeComponent\n*/\n\ninterface ITime {\n    onChange(args0: string): void;\n}\n\nexport default class FieldsTimeComponent extends Component<ITime> {\n    @action\n    protected select() {\n        return;\n    }\n\n    @action\n    protected timefy(value: string): void {\n        this.args.onChange(this.tryToGuessTime(value));\n    }\n\n    get isMobile(): boolean {\n        return isMobile();\n    }\n\n    /**\n     * This function receives a string, which it will try to parse into a time of format HH:mm\n     * For example if this function receives \"12\" it will return \"12:00\"\n     * If it receives \"1230\" it will return \"12:30\" and so on..\n     * @method tryToGuessTime\n     * @param {String} str - The string from which this function will try to guess the time\n     * @return {String}\n     *\n     */\n    private tryToGuessTime(str: string): string {\n        let hours;\n        let mins;\n\n        if (str.includes(':')) {\n            const exploded = str.split(':');\n            mins = parseInt(exploded[1], 10);\n            hours = parseInt(exploded[0], 10);\n        } else if (str.includes('.')) {\n            const exploded = str.split('.');\n            mins = parseInt(exploded[1], 10);\n            hours = parseInt(exploded[0], 10);\n        } else if (str.length >= 3) {\n            mins = parseInt(str.substring(str.length - 2, str.length), 10);\n            hours = parseInt(str.substring(0, str.length - 2), 10);\n        } else if (str === '') {\n            return '';\n        } else {\n            hours = parseInt(str, 10);\n            mins = 0;\n        }\n\n        if (isNaN(hours)) hours = 0;\n        if (isNaN(mins)) mins = 0;\n\n        if (hours < 0) hours *= -1;\n        if (hours > 23) hours = 23;\n        if (mins < 0) mins = 0;\n        if (mins > 60) mins = 59;\n\n        if (hours < 10) hours = '0' + hours;\n        if (mins < 10) mins = '0' + mins;\n\n        return '' + hours + ':' + mins;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class={{this.class}}>\\n    <TagInput\\n        @tags={{this.parsedTags}}\\n        @addTag={{this.addTag}}\\n        @removeTagAtIndex={{this.removeTagAtIndex}}\\n        @maxlength={{15}}\\n        @onKeyUp={{fn this.addTagIfImeiIsCorrect}}\\n        as |tag|>\\n        <span class=\\\"tag-input-imei {{if (not (is-equal (string-length tag) 15)) \\\"error\\\"}}\\\">\\n            {{tag}}\\n        </span>\\n    </TagInput>\\n</div>\\n\", {\"contents\":\"<div class={{this.class}}>\\n    <TagInput\\n        @tags={{this.parsedTags}}\\n        @addTag={{this.addTag}}\\n        @removeTagAtIndex={{this.removeTagAtIndex}}\\n        @maxlength={{15}}\\n        @onKeyUp={{fn this.addTagIfImeiIsCorrect}}\\n        as |tag|>\\n        <span class=\\\"tag-input-imei {{if (not (is-equal (string-length tag) 15)) \\\"error\\\"}}\\\">\\n            {{tag}}\\n        </span>\\n    </TagInput>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/timeclean-imei.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/timeclean-imei.hbs\"}});\nimport FieldsTagInputComponent from './tag-input';\nimport { action } from '@ember/object';\nimport { A } from '@ember/array';\nimport MutableArray from '@ember/array/mutable';\n\nexport default class FieldsTimecleanImeiComponent extends FieldsTagInputComponent {\n    protected class: string = 'ember-movenium-timeclean-imei-field';\n\n    @action public onChange(tags: MutableArray<string>) {\n        return this.args.onChange(JSON.stringify(tags));\n    }\n\n    get parsedTags() {\n        let tags: MutableArray<string> = A([]);\n        if (typeof this.args.value === 'string') tags = A(JSON.parse(this.args.value));\n        else if (this.args.value) tags = A(this.args.value);\n        this.tags = tags;\n        return tags;\n    }\n\n    @action protected addTagIfImeiIsCorrect(tag: string) {\n        const tagAsNumber = parseInt(tag, 10);\n        if (!isNaN(tagAsNumber) && isFinite(tagAsNumber) && tag.length === 15) {\n            this.addTagToList(tag);\n            (document.querySelector('.' + this.class + ' input') as HTMLInputElement).value = '';\n        }\n    }\n\n    protected addTagToList(tag: string) {\n        this.tags.pushObject(tag);\n        this.onChange(this.tags as MutableArray<string>);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Input\\n    @type=\\\"text\\\"\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    @disabled={{@disabled}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\", {\"contents\":\"<Input\\n    @type=\\\"text\\\"\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    @disabled={{@disabled}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/username.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/username.hbs\"}});\nimport Component from '@glimmer/component';\nexport default class FieldsUsernameComponent extends Component {}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div>\\n\\n    <div>\\n        {{#if this.gpsWeather}}\\n            {{#if this.weatherLoading}}\\n                <img src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} /> {{t \\\"worksitediary.fetching_weather\\\"}}\\n            {{else}}\\n                <span class=\\\"move move-{{@value.weather}} weather-icon\\\"></span>\\n                    {{@value.temperature}}{{this.translations.temp}}, {{@value.windspeed}}{{this.translations.wspeed}}, {{@value.humidity}}{{this.translations.percent}}, {{t \\\"worksitediary.abbr_dew_point\\\"}}: {{@value.dew_point}}{{this.translations.temp}}\\n            {{/if}}\\n        {{/if}}\\n    </div>\\n    <div>\\n        <span class=\\\"weather-brand\\\">&#8212;{{t \\\"general.weather_provider\\\"}}</span>\\n    </div>\\n\\n    <br /><br />\\n</div>\", {\"contents\":\"<div>\\n\\n    <div>\\n        {{#if this.gpsWeather}}\\n            {{#if this.weatherLoading}}\\n                <img src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} /> {{t \\\"worksitediary.fetching_weather\\\"}}\\n            {{else}}\\n                <span class=\\\"move move-{{@value.weather}} weather-icon\\\"></span>\\n                    {{@value.temperature}}{{this.translations.temp}}, {{@value.windspeed}}{{this.translations.wspeed}}, {{@value.humidity}}{{this.translations.percent}}, {{t \\\"worksitediary.abbr_dew_point\\\"}}: {{@value.dew_point}}{{this.translations.temp}}\\n            {{/if}}\\n        {{/if}}\\n    </div>\\n    <div>\\n        <span class=\\\"weather-brand\\\">&#8212;{{t \\\"general.weather_provider\\\"}}</span>\\n    </div>\\n\\n    <br /><br />\\n</div>\",\"moduleName\":\"tt4/components/addon/fields/weather.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/weather.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { fetchWeather } from 'tt4/ember-movenium/utils/weather';\nimport GpsService from 'tt4/services/gps2';\n\ninterface IWeather {\n    gps: GpsService;\n    weatherLoading: boolean;\n    gpsWeather: boolean;\n    value: { [key: string]: string };\n    onChange(args0: JSON): void;\n    shouldAutomaticallyFetchNewWeather?: boolean;\n}\n\nexport default class FieldsWeatherComponent extends Component<IWeather> {\n    @tracked public weatherLoading: boolean = false;\n\n    protected translations = { temp: '°C', wspeed: 'm/s', percent: '%' };\n    @service('gps2' as any) declare gps: GpsService;\n\n    constructor(owner: unknown, args: IWeather) {\n        super(owner, args);\n        this.gps.start();\n    }\n\n    get gpsWeather(): Promise<any> | { [key: string]: string } | null {\n        if (this.args.shouldAutomaticallyFetchNewWeather === false) {\n            return this.args.value;\n            // return new Promise(resolve=>resolve(this.args.value))\n        }\n\n        if (this.gps.lockedPosition) {\n            this.weatherLoading = true;\n            const position = this.gps.lockedPosition;\n\n            return new Promise(async (resolve) => {\n                const weather = await fetchWeather(position.latitude, position.longitude);\n                this.weatherLoading = false;\n                this.args.onChange(weather);\n                resolve(weather);\n            });\n        } else {\n            return this.args.value;\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Collector::Fields::WorkPermitAttachment\\n    @model={{@record}}\\n    @field={{@field}}\\n    @bubbleChange={{@onChange}}\\n/>\\n\", {\"contents\":\"<Collector::Fields::WorkPermitAttachment\\n    @model={{@record}}\\n    @field={{@field}}\\n    @bubbleChange={{@onChange}}\\n/>\\n\",\"moduleName\":\"tt4/components/addon/fields/work-permit-attachment.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/work-permit-attachment.hbs\"}});\nimport Component from '@glimmer/component';\n\nexport default class CollectorFieldsWorkPermitAttachmentComponent extends Component {\n\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<DumpDev @text=\\\"addon form-add migrated to tt4\\\" />\\n{{#if this.savedView}}\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Saved=(component\\n                    \\\"addon/form-add/saved\\\"\\n                    record=(readonly @record)\\n                    fields=this.fields\\n                    close=(fn this.close)\\n                    edit=(fn (mut this.savedView) false)\\n                    addSame=@addSame\\n                    addNew=@addNew\\n                    closeSaved=(fn (mut this.savedView) false)\\n                )\\n            )\\n        }}\\n    {{else}}\\n        <Addon::FormAdd::Saved\\n            @record={{@record}}\\n            @fields={{this.fields}}\\n            @close={{this.close}}\\n            @edit={{fn (mut this.savedView) false}}\\n            @addSame={{@addSame}}\\n            @addNew={{@addNew}}\\n            @closeSaved={{fn (mut this.savedView) false}}\\n        />\\n    {{/if}}\\n{{else if readyToRenderFields}}\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Fields=(component\\n                    \\\"addon/form-add/fields\\\"\\n                    fields=this.visibleFields\\n                    stashedFields=this.stashedFields\\n                    record=(readonly (await @record))\\n                    filters=this.allFilters\\n                    onChange=this.onChange\\n                    disabled=@disabled\\n                    setDisabled=this.setDisabled\\n                )\\n                OnChange=this.onChange\\n            )\\n        }}\\n    {{else}}\\n\\n        <Addon::FormAdd::Fields\\n            @fields={{this.visibleFields}}\\n            @stashedFields={{this.stashedFields}}\\n            @record={{readonly (await @record)}}\\n            @onChange={{fn this.onChange}}\\n            @filters={{this.allFilters}}\\n            @disabled={{@disabled}}\\n            @setDisabled={{this.setDisabled}}\\n            @placeholder={{@placeholder}}\\n        />\\n    {{/if}}\\n\\n    {{#if this.error}}\\n        <Addon::FormAdd::Error @error={{this.error}} />\\n    {{/if}}\\n\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Buttons=(component\\n                    \\\"addon/form-add/buttons\\\"\\n                    save=this.save\\n                    cancel=this.close\\n                    saving=this.saving\\n                    disabled=(or @disabled this.saveDisabled)\\n                    form=@form\\n                )\\n            )\\n        }}\\n    {{else}}\\n        <Addon::FormAdd::Buttons\\n            @saving={{this.saving}}\\n            @form={{@form}}\\n            @disabled={{or @disabled this.saveDisabled}}\\n            @save={{this.save}}\\n            @cancel={{this.close}}\\n        />\\n    {{/if}}\\n{{else}}\\n\\n    <LoaderIcon />\\n{{/if}}\", {\"contents\":\"<DumpDev @text=\\\"addon form-add migrated to tt4\\\" />\\n{{#if this.savedView}}\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Saved=(component\\n                    \\\"addon/form-add/saved\\\"\\n                    record=(readonly @record)\\n                    fields=this.fields\\n                    close=(fn this.close)\\n                    edit=(fn (mut this.savedView) false)\\n                    addSame=@addSame\\n                    addNew=@addNew\\n                    closeSaved=(fn (mut this.savedView) false)\\n                )\\n            )\\n        }}\\n    {{else}}\\n        <Addon::FormAdd::Saved\\n            @record={{@record}}\\n            @fields={{this.fields}}\\n            @close={{this.close}}\\n            @edit={{fn (mut this.savedView) false}}\\n            @addSame={{@addSame}}\\n            @addNew={{@addNew}}\\n            @closeSaved={{fn (mut this.savedView) false}}\\n        />\\n    {{/if}}\\n{{else if readyToRenderFields}}\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Fields=(component\\n                    \\\"addon/form-add/fields\\\"\\n                    fields=this.visibleFields\\n                    stashedFields=this.stashedFields\\n                    record=(readonly (await @record))\\n                    filters=this.allFilters\\n                    onChange=this.onChange\\n                    disabled=@disabled\\n                    setDisabled=this.setDisabled\\n                )\\n                OnChange=this.onChange\\n            )\\n        }}\\n    {{else}}\\n\\n        <Addon::FormAdd::Fields\\n            @fields={{this.visibleFields}}\\n            @stashedFields={{this.stashedFields}}\\n            @record={{readonly (await @record)}}\\n            @onChange={{fn this.onChange}}\\n            @filters={{this.allFilters}}\\n            @disabled={{@disabled}}\\n            @setDisabled={{this.setDisabled}}\\n            @placeholder={{@placeholder}}\\n        />\\n    {{/if}}\\n\\n    {{#if this.error}}\\n        <Addon::FormAdd::Error @error={{this.error}} />\\n    {{/if}}\\n\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Buttons=(component\\n                    \\\"addon/form-add/buttons\\\"\\n                    save=this.save\\n                    cancel=this.close\\n                    saving=this.saving\\n                    disabled=(or @disabled this.saveDisabled)\\n                    form=@form\\n                )\\n            )\\n        }}\\n    {{else}}\\n        <Addon::FormAdd::Buttons\\n            @saving={{this.saving}}\\n            @form={{@form}}\\n            @disabled={{or @disabled this.saveDisabled}}\\n            @save={{this.save}}\\n            @cancel={{this.close}}\\n        />\\n    {{/if}}\\n{{else}}\\n\\n    <LoaderIcon />\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/form-add.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-add.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action, set, computed } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport DS from 'ember-data';\nimport FormsService from 'tt4/injections/services/forms';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { IFormField, IField, IOptions } from 'tt4/ember-movenium/interfaces/forms';\nimport { save_record } from 'tt4/ember-movenium/utils/save-the-children';\nimport { isVisible } from 'tt4/ember-movenium/utils/validations';\nimport { notifyPropertyChange } from '@ember/object';\nimport moment from 'moment';\nimport NeedsService from 'tt4/injections/services/need';\nimport EventedService from 'tt4/injections/services/need';\nimport SurveysService from 'tt4/injections/services/surveys';\nimport AnalyticsService from 'tt4/injections/services/analytics';\n\ninterface IFormAdd {\n    filters: { [key: string]: string };\n    saving: boolean;\n    form: string;\n    error: [] | object | null;\n    stateBeforeSave: string;\n    only?: string;\n    defaults?: object;\n    showSaved?: boolean;\n    disabled?: boolean;\n    record: IRecord;\n    sortFields: boolean;\n    preserveRecordOnDestroy?: boolean;\n    onFieldChange(value: any, fieldName: string, record: object): void;\n    save(): Promise<any>;\n    close?(ExtraInfo?: any): void;\n    rowAdded?(arg0: IRecord): void;\n    rowEdited?(args0: IRecord): void;\n}\n\n/**\n *\n * report for collector form\n *\n * usage: <br>\n *  BASIC: <br>\n * ```hbs\n *<Addon::FormAdd @form=\"worktime\" />\n * ```\n *\n *  ADVANCED:\n * ```hbs\n <Addon::FormAdd @form={{this.form}} @record={{this.record}} @close={{fn (mut show) false}} as |form|>\n <form.fields as |fields fieldComponent|>\n {{#each fields as |field|}}\n {{fieldComponent field=field}}\n {{/each}}\n </form.fields>\n <form.buttons />\n </Addon::FormAdd>\n *```\n * ```\n * parameters:\n *      form: collector form name\n *      record: record for the add form\n *      defaults: if record is not given directly (or record is new) you can also give object which is passed to createRecord method\n *      showSaved: if saved page should be shown\n *      only: list columns you want to show (ie \"date,user\")\n *      filters: object containing filters for fields. ie filters=(hash user=(userlevel=\"5\"))\n * ```\n * ```\n * actions:\n *      rowAdded: called when new row is created and saved\n *      rowEdited: called when existing row is edited and saved\n *      close: called when cancel is clicked or saved page ok is clicked\n *      fieldChanged: when any field is edited on form action is triggered. Has parameters value and field\n * ```\n * @class FormAddComponent\n * @constructor\n *\n */\n\nexport default class FormAddComponent extends Component<IFormAdd> {\n    @tracked public saving = false;\n    @tracked public error = null;\n    @tracked public stateBeforeSave = '';\n    @tracked public savedView: boolean = false;\n    @tracked public filters: any = {};\n    @tracked public addingMethod: string = '';\n    public sortFields: boolean = false;\n\n    @tracked public form = '';\n    @tracked private saveButtonDisabled: boolean = false;\n    @tracked public readyToRenderFields = false;\n    @service private store!: DS.Store;\n    @service protected forms: FormsService;\n    @service protected need: NeedsService;\n    @service private evented: EventedService;\n    @service private surveys: SurveysService;\n    @service private analytics: AnalyticsService;\n\n    @service('gps2' as any) private gps: any;\n\n    constructor(owner: unknown, args: IFormAdd) {\n        super(owner, args);\n        this.doTheseBeforeRenderingFields();\n    }\n\n    private async doTheseBeforeRenderingFields() {\n        this.setConditionalFieldProperties();\n        await this.setFilters();\n\n        set(this, 'readyToRenderFields', true);\n    }\n\n    public willDestroy() {\n        // if record is new (and preserveRecordOnDestroy is not set) we just destoy it\n        // if we were editing record we rollback it to make sure record is not left in unsaved state when we destroy this component (preserveRecordOnDestroy skips this also)\n        if (!this.args.preserveRecordOnDestroy && this.args.record && this.args.record.isNew)\n            this.args.record.deleteRecord();\n        else if (\n            !this.args.preserveRecordOnDestroy &&\n            !this.args.record.isNew &&\n            this.args.record.hasDirtyAttributes\n        )\n            this.args.record.rollbackAttributes();\n    }\n\n    // _hide is used by conditionalHides\n    protected get visibleFields(): IFormField[] {\n        // we need to set conditional fields again because they might have changed\n        this.setConditionalFieldProperties();\n        return this.fields.filter((field: IFormField) => !field._hide && !field.features?.stashed);\n    }\n\n    protected get stashedFields(): IFormField[] {\n        return this.fields.filter((field: IFormField) => field.features?.stashed);\n    }\n\n    @action\n    public async onChange(fieldName: string, value: any) {\n        // For some reason dropdowns sends value as undefined when field is cleared. If record field is set to undefined .save method\n        // does not make any changes to the field .. so we need to check if value is undefined and if so set it to null\n        if (typeof value === 'undefined') value = null;\n\n        // in some cases onFiledChange is async so we need to wait for the record to be saved with the new value\n        // ie location field needs to be updated after project is saved to record, so we get correct distance\n        await this.args.onFieldChange(fieldName, value, this.args.record);\n\n        // create event so that other components can listen to it\n        this.evented.formAddFieldChanged(fieldName, value);\n\n        this.changeFilter(fieldName, value);\n        // this is a dirty, filthy hack (also not ddau) for marking a record dirty when its relationships (belongsTo, hasMany) are changed\n        // this is done here as a workaround so you don't need to do this in the parent component every time\n        // https://github.com/emberjs/rfcs/pull/21\n        (await this.args.record).send('becomeDirty');\n        const errors = this.args.record?.errors as any | null;\n        if (errors?.has(fieldName) && value) errors.remove(fieldName);\n        this.setConditionalFieldProperties(fieldName);\n        notifyPropertyChange(this, 'visibleFields');\n    }\n\n    @action\n    public setDisabled(disabled: boolean): void {\n        this.saveButtonDisabled = disabled;\n    }\n\n    @action\n    public async save(): Promise<any> {\n        const record = this.args.record;\n\n        this.saving = true;\n        this.error = null;\n        this.stateBeforeSave = this.args.record.currentState.stateName;\n        let isRecordNew = this.args.record.isNew;\n\n        try {\n            await record.validate();\n\n            if (!record.isValid) {\n                const firstErrorElement = document.querySelector('.has-error');\n                if (firstErrorElement) firstErrorElement.scrollIntoView({ behavior: 'smooth' });\n                return (this.saving = false);\n            }\n\n            await save_record(record, this); // save-the-children util\n\n            // track event to analytics\n            if (this.analytics.customData?.category) {\n                this.analytics.trackEvent({\n                    category: this.analytics.customData['category'],\n                    action: 'Save worktime',\n                    label: this.args.form,\n                });\n            }\n\n            this.evented.storeEvent('insert', this.args.form, record);\n\n            if (this.args.showSaved === false) {\n                if (this.args.close) this.close('AfterSave');\n            } else {\n                this.savedView = true;\n            }\n\n            if (this.stateBeforeSave === 'root.loaded.created.uncommitted') {\n                if (this.args.rowAdded) this.args.rowAdded(this.args.record);\n            } else {\n                if (this.args.rowEdited) this.args.rowEdited(this.args.record);\n            }\n\n            this.saving = false;\n\n            if (this.args.form == 'worktime' && isRecordNew) {\n                this.surveys.initializeAndRun('worktime_entry'); // show wootric CES-survey after saving new worktime\n            }\n        } catch (reason) {\n            this.saving = false;\n            this.error = reason;\n        }\n    }\n\n    @action\n    public close(ExtraInfo: any): void {\n        // Rollback changes on form if form is closed without saving\n        if (ExtraInfo !== 'AfterSave') {\n            this.args.record.rollbackAttributes();\n        }\n        // if this.analytics.customData.category is set, clear it after closing the form\n        if (this.analytics.customData?.category) {\n            this.analytics.initCustomData();\n        }\n        // @ts-ignore\n        this.args.close?.(ExtraInfo);\n    }\n\n    // You may be wondering: 'Why @computed!1!??'\n    // We need to cache the form and only recalculate fields if/when it changes,\n    // otherwise this will update basically every time a field is changed and cause side-effects, ie database field will requery options\n    // @computed because we don't have @cached yet\n    @computed('args.form', 'args.only', 'filters', 'args.record')\n    get fields() {\n        const fields = this.forms.fieldArray(this.args.form);\n        let filteredFields = fields.filter((field: IFormField) => {\n            if (this.args.only && !this.args.only.split(',').includes(field.name)) return false;\n\n            // Always \"show\" fields that are conditionally hidden, this conditionality is handled elsewhere\n            if (field.features?.hide && isArray(field.features.hide)) return true;\n            if (\n                field.features?.hide &&\n                typeof field.features?.hide === 'object' &&\n                field.features?.hide.condition\n            ) {\n                if ([\"'$editing'\", '$editing'].includes(field.features.hide.condition)) {\n                    // hide if editing\n                    if (!this.args.record?.isNew) return false; // editing\n                    else return true;\n                }\n                if ([\"'!$editing'\", '!$editing'].includes(field.features.hide.condition)) {\n                    // hide if adding\n                    if (!!this.args.record?.isNew) return false; // adding\n                    else return true;\n                }\n                return false; // otherwise hide\n            }\n            if (field.features?.hide) return false; // unconditional hide\n            if (field.features?.hide_tt4) return false;\n            if (field.features?.mandatory && !isArray(field.features.mandatory))\n                field.mandatory = field.features.mandatory as boolean;\n\n            return true;\n        });\n        // @ts-ignore\n        filteredFields = filteredFields.map((field) => {\n            if (field.name === 'location' || field.name === 'end_location')\n                field.forceType = 'gpslocation';\n            if (field.name === 'location_map') field.forceType = 'gpslocationmap';\n            if (\n                field.type === 'database' &&\n                field.options?.form === 'project' &&\n                this.useForcedGpsField(field)\n            )\n                field.forceType = 'database-gps-force-field';\n\n            if (\n                !!this.args.record &&\n                !!this.args.record.isNew &&\n                field.features?.default_value &&\n                this.args.record[field.name] == null\n            ) {\n                this.onChange(field.name, this.getDefaultValue(field));\n            }\n\n            return field;\n        });\n\n        if (this.args.sortFields) {\n            // @ts-ignore\n            return filteredFields.sort((a, b): number => {\n                if (a.name < b.name) {\n                    return -1;\n                } else {\n                    return 1;\n                }\n            });\n        } else {\n            return filteredFields;\n        }\n    }\n\n    private useForcedGpsField(field: IFormField): boolean {\n        if (!this.need.test('userlevel=1')) return false;\n        if (\n            this.forms.fieldExists('project', 'force_location') &&\n            ['worktime', 'presence'].includes(field.form)\n        )\n            return true;\n        return false;\n    }\n\n    private getDefaultValue(field: IFormField) {\n        const defaultValue = field.features?.default_value;\n\n        if (field.type === 'date') {\n            if (defaultValue === 'today') {\n                return moment().format('YYYY-MM-DD');\n            } else if (defaultValue === 'yesterday') {\n                return moment().subtract(1, 'day').format('YYYY-MM-DD');\n            }\n        }\n        if (typeof defaultValue === 'object') {\n            return defaultValue.value;\n        }\n\n        return defaultValue;\n    }\n\n    private async setFilters() {\n        const filterBy = this.getFilters(this.args.form);\n        const filters: any = {};\n        await this.args.record;\n        filterBy.forEach((item: any) => {\n            if (!filters[item.field]) filters[item.field] = {};\n            filters[item.field][item.filter] = this.args.record\n                ? this.args.record[item.with]\n                : null;\n        });\n\n        const parsedFilters: any = {};\n        Object.keys(filters).forEach((key: string) => {\n            parsedFilters[key] = filters[key];\n        });\n\n        set(this, 'filters', parsedFilters);\n    }\n\n    get allFilters() {\n        if (this.args.filters) {\n            Object.keys(this.args.filters).forEach((key: string) => {\n                // if there are external filters and capi-filters, we merge them together\n                if (this.filters[key]) {\n                    set(\n                        this,\n                        // @ts-ignore\n                        'filters.' + key,\n                        Object.assign(this.filters[key], this.args.filters[key]),\n                    );\n                } else {\n                    // @ts-ignore\n                    set(this, 'filters.' + key, this.args.filters[key]);\n                }\n            });\n        }\n        return this.filters;\n    }\n\n    /**\n     * this method is called when ever field value is changed on form\n     * 1) fetch all filters that are dependent on field (filter.with) that was changed\n     * 2) set all filter values with new value ie this.filters + (item.field) + (item.filter) = value\n     *\n     * example:\n     *  getFilters returns [{field: 'subtaskname', filter: 'task', with: 'taskname'}]\n     *\n     *  -> if field taskname is changed -> set this.filters.subtaskname.task = value\n     *\n     * @param field\n     * @param value\n     */\n    private changeFilter(field: string, value: any) {\n        const dependentFilters = this.getFilters(this.args.form).filter(\n            (item: any) => item.with === field,\n        );\n\n        dependentFilters.forEach((item: any) => {\n            const clone = Object.assign({}, this.filters[item.field]); // object must be cloned so set triggers all the right observers\n            clone[item.filter] = value; // set the new value for the filter\n            // @ts-ignore\n            set(this, 'filters.' + item.field, clone);\n        });\n    }\n\n    /**\n     * Example of one filter {field: \"task\", filter: \"project\", with: \"project\"}\n     * @method\n     * @param {string} form\n     * @return {object}\n     * @private\n     */\n    private getFilters(form: string) {\n        const filters = [];\n        const fields: IFormField[] = this.forms.fieldArray(form);\n        for (const field of fields) {\n            let reload = field.features?.reload;\n            if (reload) {\n                if (!isArray(reload)) reload = [reload];\n\n                for (const reloadfield of reload as any) {\n                    filters.push({\n                        // field name that needs to be reloaded\n                        field: reloadfield,\n                        // filter name that is used to fetch objects.\n                        // Normally the form where reloader field points to. ie tasks?project=1234 => project\n                        filter: field.options?.form,\n                        // name of the field to use as filter .. this needs to found from model\n                        with: field.name,\n                    });\n                }\n            }\n        }\n\n        return filters;\n    }\n\n    private get conditionalFields(): IField[] {\n        return this.fields.filter((field: IField) => {\n            return (\n                (field.features?.hide && isArray(field.features.hide)) ||\n                (field.features?.mandatory && isArray(field.features.mandatory))\n            );\n        });\n    }\n\n    // We may have 6 database fields all setting 'saveButtonDisabled' to false\n    // we only care about cases where it actually changes so we cache with computed\n    @computed('saveButtonDisabled', 'saving', 'args.disabled')\n    protected get saveDisabled(): boolean {\n        return this.saveButtonDisabled || this.args.disabled || this.saving;\n    }\n\n    /**\n     * Hide or show fields if field.features.hide setting is conditional <br>\n     * If called without field parameter then goes through all fields that have some kind of conditional setting\n     * else only for the given field name <br>\n     * Sets true/false to fields \"private\" _hide variable that is used atleast in form-add/field component <br>\n     * Examples: <br>\n     * `Name: hide, Value: [{\"alasveto\": \"eka\"}]` <br>\n     * `Name: hide, Value: [{\"alasveto\": \"!(empty)\"}]` <br>\n     * `Name: hide, Value: [{\"alasveto\": \"(empty)\"}]`\n     * @method\n     * @param {string} field the external type of the field also known as \"name\"\n     * @return {void}\n     * @private\n     */\n    private setConditionalFieldProperties(field: string | boolean = false): void {\n        this.conditionalFields.forEach((item) => {\n            // Conditional Hide\n            if (item.features?.hide) {\n                (item.features?.hide as [{}]).forEach((rule) => {\n                    let ruleField = Object.keys(rule)[0].split('.')[0];\n                    if ((field && ruleField.includes(field as any)) || !field) {\n                        item._hide = !isVisible(this.args.record, item.features?.hide as IOptions);\n                    }\n                });\n            }\n\n            // Conditional Mandatory\n            if (item.features?.mandatory) {\n                (item.features?.mandatory as [{}]).forEach(() => {\n                    set(\n                        item,\n                        'mandatory',\n                        isVisible(this.args.record, item.features?.mandatory as IOptions),\n                    );\n                });\n            }\n        });\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-form-button-group\\\">\\n<Addon::LoadingButton @disabled={{if @disabled @disabled @saving}} @loading={{@saving}} @onClick={{@save}} @name=\\\"save-button\\\" @form={{@form}}>{{t \\\"general.save\\\"}}</Addon::LoadingButton>\\n<button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-cancel-button\\\" {{on 'click' @cancel}} name=\\\"cancel-button\\\" data-anchor={{concat @form \\\"-cancel-button\\\"}}>{{t \\\"general.cancel\\\"}}</button>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-form-button-group\\\">\\n<Addon::LoadingButton @disabled={{if @disabled @disabled @saving}} @loading={{@saving}} @onClick={{@save}} @name=\\\"save-button\\\" @form={{@form}}>{{t \\\"general.save\\\"}}</Addon::LoadingButton>\\n<button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-cancel-button\\\" {{on 'click' @cancel}} name=\\\"cancel-button\\\" data-anchor={{concat @form \\\"-cancel-button\\\"}}>{{t \\\"general.cancel\\\"}}</button>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/form-add/buttons.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-add/buttons.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-form-add-error\\\">\\n    <Addon::CollectorErrorMessage @error={{@error}} />\\n</div>\", {\"contents\":\"<div class=\\\"ember-movenium-form-add-error\\\">\\n    <Addon::CollectorErrorMessage @error={{@error}} />\\n</div>\",\"moduleName\":\"tt4/components/addon/form-add/error.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-add/error.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if (has-block)}}\\n    {{yield\\n        @fields\\n        (component\\n            \\\"addon/field-container\\\"\\n            filters=@filters\\n            setDisabled=@setDisabled\\n            disabled=@disabled\\n        )\\n    }}\\n{{else}}\\n\\n    {{#each @fields as |Field|}}\\n        <Addon::FieldContainer\\n            @field={{Field.name}}\\n            @form={{Field.form}}\\n            @forceType={{Field.forceType}}\\n            @record={{readonly @record}}\\n            @value={{get (await @record) Field.name}}\\n            @onChange={{fn @onChange Field.name}}\\n            @filters={{@filters}}\\n            @disabled={{if\\n                (and (get @filters Field.name) @disabled)\\n                true\\n                false\\n            }}\\n            @mandatory={{Field.mandatory}}\\n            @setDisabled={{@setDisabled}}\\n            @placeholder={{@placeholder}}\\n        />\\n    {{/each}}\\n\\n{{/if}}\\n\\n{{#if @stashedFields.length}}\\n    <Addon::Accordion @class=\\\"ember-movenium-form-add-accordion\\\" as |Acc|>\\n        <Acc.Item\\n            @showTitle={{t \\\"general.add.show_stashed\\\"}}\\n            @hideTitle={{t \\\"general.add.hide_stashed\\\"}}\\n        >\\n            {{#each @stashedFields as |Field|}}\\n                <Addon::FieldContainer\\n                    @field={{Field.name}}\\n                    @form={{Field.form}}\\n                    @forceType={{Field.forceType}}\\n                    @record={{readonly @record}}\\n                    @value={{get (await @record) Field.name}}\\n                    @onChange={{fn @onChange Field.name}}\\n                    @filters={{@filters}}\\n                    @disabled={{if\\n                        (and (get @filters Field.name) @disabled)\\n                        true\\n                        false\\n                    }}\\n                    @mandatory={{Field.mandatory}}\\n                    @setDisabled={{@setDisabled}}\\n                    @placeholder={{@placeholder}}\\n                />\\n            {{/each}}\\n        </Acc.Item>\\n    </Addon::Accordion>\\n{{/if}}\", {\"contents\":\"{{#if (has-block)}}\\n    {{yield\\n        @fields\\n        (component\\n            \\\"addon/field-container\\\"\\n            filters=@filters\\n            setDisabled=@setDisabled\\n            disabled=@disabled\\n        )\\n    }}\\n{{else}}\\n\\n    {{#each @fields as |Field|}}\\n        <Addon::FieldContainer\\n            @field={{Field.name}}\\n            @form={{Field.form}}\\n            @forceType={{Field.forceType}}\\n            @record={{readonly @record}}\\n            @value={{get (await @record) Field.name}}\\n            @onChange={{fn @onChange Field.name}}\\n            @filters={{@filters}}\\n            @disabled={{if\\n                (and (get @filters Field.name) @disabled)\\n                true\\n                false\\n            }}\\n            @mandatory={{Field.mandatory}}\\n            @setDisabled={{@setDisabled}}\\n            @placeholder={{@placeholder}}\\n        />\\n    {{/each}}\\n\\n{{/if}}\\n\\n{{#if @stashedFields.length}}\\n    <Addon::Accordion @class=\\\"ember-movenium-form-add-accordion\\\" as |Acc|>\\n        <Acc.Item\\n            @showTitle={{t \\\"general.add.show_stashed\\\"}}\\n            @hideTitle={{t \\\"general.add.hide_stashed\\\"}}\\n        >\\n            {{#each @stashedFields as |Field|}}\\n                <Addon::FieldContainer\\n                    @field={{Field.name}}\\n                    @form={{Field.form}}\\n                    @forceType={{Field.forceType}}\\n                    @record={{readonly @record}}\\n                    @value={{get (await @record) Field.name}}\\n                    @onChange={{fn @onChange Field.name}}\\n                    @filters={{@filters}}\\n                    @disabled={{if\\n                        (and (get @filters Field.name) @disabled)\\n                        true\\n                        false\\n                    }}\\n                    @mandatory={{Field.mandatory}}\\n                    @setDisabled={{@setDisabled}}\\n                    @placeholder={{@placeholder}}\\n                />\\n            {{/each}}\\n        </Acc.Item>\\n    </Addon::Accordion>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/form-add/fields.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-add/fields.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n<div class=\\\"ember-movenium-form-add-saved\\\">\\n    <ul class=\\\"ember-movenium-list-group\\\">\\n        <h2 class=\\\"title\\\">{{t \\\"saved.title\\\"}}</h2>\\n        {{#if (has-block)}}\\n            {{yield (hash Fields=@fields Record=@record)}}\\n        {{else}}\\n            {{#each @fields as |field|}}\\n                <li class=\\\"ember-movenium-list-group-item\\\">\\n                    <b>{{translate-column form=field.form field=field.name}}: </b>\\n                    <Addon::ValueFormat @form={{field.form}} @field={{field.name}} @value={{get @record field.name}} />\\n                </li>\\n            {{/each}}\\n        {{/if}}\\n    </ul>\\n\\n    <button type=\\\"button\\\" class=\\\"ember-movenium-button large ember-movenium-save-button \\\" {{on 'click' @close}} data-anchor=\\\"saved-button-ok\\\">{{t \\\"general.ok\\\"}}</button>\\n\\n    <hr>\\n    <h4>{{t \\\"saved.what_next\\\"}}</h4>\\n    <div class=\\\"ember-movenium-saved-next-actions\\\">\\n        {{#if @addNew}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-saved-next-button\\\" {{on 'click' @addNew}} {{on 'click' @closeSaved}} title={{t \\\"saved.addNew\\\"}} data-anchor=\\\"saved-button-addnew\\\">\\n                {{svg-jar \\\"PlusMath\\\" width=\\\"30px\\\"}}\\n            </button>\\n        {{/if}}\\n        {{#if @addSame}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-saved-next-button\\\" {{on 'click' @addSame}} {{on 'click' @closeSaved}} title={{t \\\"saved.addSame\\\"}} data-anchor=\\\"saved-button-addsame\\\">\\n                {{svg-jar \\\"CopyRow\\\" width=\\\"30px\\\"}}\\n            </button>\\n        {{/if}}\\n        {{#if @edit}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-saved-next-button\\\" {{on 'click' @edit}} title={{t \\\"saved.edit_new\\\"}} data-anchor=\\\"saved-button-edit\\\">\\n                {{svg-jar \\\"MovePencil\\\" width=\\\"30px\\\"}}\\n            </button>\\n        {{/if}}\\n    </div>\\n</div>\\n\", {\"contents\":\"\\n<div class=\\\"ember-movenium-form-add-saved\\\">\\n    <ul class=\\\"ember-movenium-list-group\\\">\\n        <h2 class=\\\"title\\\">{{t \\\"saved.title\\\"}}</h2>\\n        {{#if (has-block)}}\\n            {{yield (hash Fields=@fields Record=@record)}}\\n        {{else}}\\n            {{#each @fields as |field|}}\\n                <li class=\\\"ember-movenium-list-group-item\\\">\\n                    <b>{{translate-column form=field.form field=field.name}}: </b>\\n                    <Addon::ValueFormat @form={{field.form}} @field={{field.name}} @value={{get @record field.name}} />\\n                </li>\\n            {{/each}}\\n        {{/if}}\\n    </ul>\\n\\n    <button type=\\\"button\\\" class=\\\"ember-movenium-button large ember-movenium-save-button \\\" {{on 'click' @close}} data-anchor=\\\"saved-button-ok\\\">{{t \\\"general.ok\\\"}}</button>\\n\\n    <hr>\\n    <h4>{{t \\\"saved.what_next\\\"}}</h4>\\n    <div class=\\\"ember-movenium-saved-next-actions\\\">\\n        {{#if @addNew}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-saved-next-button\\\" {{on 'click' @addNew}} {{on 'click' @closeSaved}} title={{t \\\"saved.addNew\\\"}} data-anchor=\\\"saved-button-addnew\\\">\\n                {{svg-jar \\\"PlusMath\\\" width=\\\"30px\\\"}}\\n            </button>\\n        {{/if}}\\n        {{#if @addSame}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-saved-next-button\\\" {{on 'click' @addSame}} {{on 'click' @closeSaved}} title={{t \\\"saved.addSame\\\"}} data-anchor=\\\"saved-button-addsame\\\">\\n                {{svg-jar \\\"CopyRow\\\" width=\\\"30px\\\"}}\\n            </button>\\n        {{/if}}\\n        {{#if @edit}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-saved-next-button\\\" {{on 'click' @edit}} title={{t \\\"saved.edit_new\\\"}} data-anchor=\\\"saved-button-edit\\\">\\n                {{svg-jar \\\"MovePencil\\\" width=\\\"30px\\\"}}\\n            </button>\\n        {{/if}}\\n    </div>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/form-add/saved.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-add/saved.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<DumpDev @text=\\\"addon form-report-filters migrated to tt4\\\" />\\n\\n<div class=\\\"tt4-addon-filters flex-column filter-comp-component\\\">\\n    {{#each this.filters as |filter|}}\\n        <div class=\\\"flex-filter\\\" data-anchor={{concat filter.data_name '-filter'}}>\\n            <span class=\\\"filter-label\\\" data-anchor={{concat filter.data_name '-filter-title'}}>{{filter.label}}</span>\\n            {{#if (is-equal 'date' filter.type)}}\\n                <DateRangePicker\\n                    @clearBtn={{not-eq filter.features.use_index \\\"index1\\\"}}\\n                    @start={{filter.start}}\\n                    @fieldName={{filter.name}}\\n                    @end={{filter.end}}\\n                    @value={{filter.value}}\\n                    @title={{filter.title}}\\n                    @wagePeriods={{true}}\\n                    @dateChange={{fn this.filterChange filter.customfield}} />\\n            {{else if (and (is-equal 'database' filter.type) @useMultiFilter (not filter.customfield))}}\\n                <DatabaseMultipleFilter\\n                    @filter={{filter}}\\n                    @value={{filter.value}}\\n                    @change={{fn this.filterChange filter.customfield}}\\n                    @allFilters={{this.filters}} />\\n            {{else if (is-equal 'searchbox' filter.type)}}\\n                 <SearchBox\\n                     @value={{filter.value}}\\n                     @change={{fn this.filterChange filter.customfield}} />\\n            {{else if (is-equal 'groupBy' filter.type)}}\\n                 <Addon::GroupbyFilter\\n                     @value={{filter.value}}\\n                     @form={{filter.form}}\\n                     @filterChange={{fn this.filterChange 'groupBy'}} />\\n            {{else if (is-equal 'databasearray' filter.type)}}\\n                <Collector::FieldComp\\n                    @value={{filter.value}}\\n                    @prompt={{filter.prompt}}\\n                    @field={{filter}}\\n                    @change={{fn this.filterChange filter.customfield}}\\n                    @useAsFilter={{true}}\\n                    @showEmptySelection={{includes filter.name this.showEmptySelection}} />\\n            {{else}}\\n                <Collector::FieldComp\\n                    @field={{filter}}\\n                    @change={{fn this.filterChange filter.customfield}}\\n                    @useAsFilter={{true}}\\n                    @showEmptySelection={{includes filter.name this.showEmptySelection}} />\\n            {{/if}}\\n            {{#if filter.removable}}\\n                <span role=\\\"button\\\"\\n                      class=\\\"remove-filter move move-Delete\\\"\\n                      name=\\\"remove-filter\\\"\\n                      data-anchor={{concat \\\"remove-\\\" filter.data_name \\\"-filter\\\"}}\\n                    {{on 'click' (fn this.hideFilter filter) }}></span>\\n            {{/if}}\\n        </div>\\n    {{/each}}\\n\\n    {{#if (has-block)}}\\n        {{yield (fn this.filterChange null)}}\\n    {{/if}}\\n\\n    {{#if (not (is-empty this.filters))}}\\n        {{#if this.showAddFiltersButton}}\\n            <div class=\\\"flex-filter filter-btn dropdown\\\">\\n                <button class=\\\"btn btn-primary add-filters-button\\\" type=\\\"button\\\" name=\\\"add-filters\\\" data-anchor=\\\"report-add-filters\\\" {{on 'click' (fn (mut this.showFilterOptions)(not this.showFilterOptions))}}>\\n                    <span class=\\\"move move-Plus pr-2\\\"></span>{{t \\\"filters.add_new\\\"}}\\n                </button>\\n                {{#if this.showFilterOptions}}\\n                    <div class=\\\"dropdown-menu filter-options\\\" data-anchor=\\\"more-filters-options\\\">\\n                        {{#each this.hiddenFilters as |filter|}}\\n                            <li class=\\\"dropdown-item\\\" data-anchor={{concat \\\"more-filter-\\\" filter.label}} {{on 'click' (fn this.addFilter filter)}}>{{filter.label}}</li>\\n                        {{/each}}\\n                    </div>\\n                {{/if}}\\n            </div>\\n        {{/if}}\\n\\n        <div class=\\\"flex-filter filter-btn\\\" data-anchor=\\\"clear-filters\\\">\\n            <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\" name=\\\"clear-filters\\\" {{on 'click' this.clearFilters}}>{{t \\\"filters.clear\\\"}}</button>\\n        </div>\\n    {{/if}}\\n\\n</div>\\n\", {\"contents\":\"<DumpDev @text=\\\"addon form-report-filters migrated to tt4\\\" />\\n\\n<div class=\\\"tt4-addon-filters flex-column filter-comp-component\\\">\\n    {{#each this.filters as |filter|}}\\n        <div class=\\\"flex-filter\\\" data-anchor={{concat filter.data_name '-filter'}}>\\n            <span class=\\\"filter-label\\\" data-anchor={{concat filter.data_name '-filter-title'}}>{{filter.label}}</span>\\n            {{#if (is-equal 'date' filter.type)}}\\n                <DateRangePicker\\n                    @clearBtn={{not-eq filter.features.use_index \\\"index1\\\"}}\\n                    @start={{filter.start}}\\n                    @fieldName={{filter.name}}\\n                    @end={{filter.end}}\\n                    @value={{filter.value}}\\n                    @title={{filter.title}}\\n                    @wagePeriods={{true}}\\n                    @dateChange={{fn this.filterChange filter.customfield}} />\\n            {{else if (and (is-equal 'database' filter.type) @useMultiFilter (not filter.customfield))}}\\n                <DatabaseMultipleFilter\\n                    @filter={{filter}}\\n                    @value={{filter.value}}\\n                    @change={{fn this.filterChange filter.customfield}}\\n                    @allFilters={{this.filters}} />\\n            {{else if (is-equal 'searchbox' filter.type)}}\\n                 <SearchBox\\n                     @value={{filter.value}}\\n                     @change={{fn this.filterChange filter.customfield}} />\\n            {{else if (is-equal 'groupBy' filter.type)}}\\n                 <Addon::GroupbyFilter\\n                     @value={{filter.value}}\\n                     @form={{filter.form}}\\n                     @filterChange={{fn this.filterChange 'groupBy'}} />\\n            {{else if (is-equal 'databasearray' filter.type)}}\\n                <Collector::FieldComp\\n                    @value={{filter.value}}\\n                    @prompt={{filter.prompt}}\\n                    @field={{filter}}\\n                    @change={{fn this.filterChange filter.customfield}}\\n                    @useAsFilter={{true}}\\n                    @showEmptySelection={{includes filter.name this.showEmptySelection}} />\\n            {{else}}\\n                <Collector::FieldComp\\n                    @field={{filter}}\\n                    @change={{fn this.filterChange filter.customfield}}\\n                    @useAsFilter={{true}}\\n                    @showEmptySelection={{includes filter.name this.showEmptySelection}} />\\n            {{/if}}\\n            {{#if filter.removable}}\\n                <span role=\\\"button\\\"\\n                      class=\\\"remove-filter move move-Delete\\\"\\n                      name=\\\"remove-filter\\\"\\n                      data-anchor={{concat \\\"remove-\\\" filter.data_name \\\"-filter\\\"}}\\n                    {{on 'click' (fn this.hideFilter filter) }}></span>\\n            {{/if}}\\n        </div>\\n    {{/each}}\\n\\n    {{#if (has-block)}}\\n        {{yield (fn this.filterChange null)}}\\n    {{/if}}\\n\\n    {{#if (not (is-empty this.filters))}}\\n        {{#if this.showAddFiltersButton}}\\n            <div class=\\\"flex-filter filter-btn dropdown\\\">\\n                <button class=\\\"btn btn-primary add-filters-button\\\" type=\\\"button\\\" name=\\\"add-filters\\\" data-anchor=\\\"report-add-filters\\\" {{on 'click' (fn (mut this.showFilterOptions)(not this.showFilterOptions))}}>\\n                    <span class=\\\"move move-Plus pr-2\\\"></span>{{t \\\"filters.add_new\\\"}}\\n                </button>\\n                {{#if this.showFilterOptions}}\\n                    <div class=\\\"dropdown-menu filter-options\\\" data-anchor=\\\"more-filters-options\\\">\\n                        {{#each this.hiddenFilters as |filter|}}\\n                            <li class=\\\"dropdown-item\\\" data-anchor={{concat \\\"more-filter-\\\" filter.label}} {{on 'click' (fn this.addFilter filter)}}>{{filter.label}}</li>\\n                        {{/each}}\\n                    </div>\\n                {{/if}}\\n            </div>\\n        {{/if}}\\n\\n        <div class=\\\"flex-filter filter-btn\\\" data-anchor=\\\"clear-filters\\\">\\n            <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\" name=\\\"clear-filters\\\" {{on 'click' this.clearFilters}}>{{t \\\"filters.clear\\\"}}</button>\\n        </div>\\n    {{/if}}\\n\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/form-report-filters.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report-filters.hbs\"}});\nimport Component from '@glimmer/component';\nimport FormsService from 'tt4/injections/services/forms';\nimport Collector from 'tt4/injections/services/collector';\nimport { action, notifyPropertyChange } from '@ember/object';\nimport { IFormField } from 'tt4/ember-movenium/interfaces/forms';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { isEmpty, isPresent, typeOf } from '@ember/utils';\n\ninterface IFormReportFilters {\n    showColumns: string;\n    additional?: string;\n    form: string;\n    values: any;\n    filterOrder: any;\n    useMultiFilter?: boolean;\n    custParams?: string;\n    templateInUse?: any;\n    hideAdditionalFiltersButton?: boolean;\n    localStorageKey?: any;\n    change?(args0: any, args1: string): void;\n    filterChangeAction?(args0: any, args1: string): void;\n    clearFilters?(): void;\n}\n\nexport default class FormReportFiltersComponent\n    extends Component<IFormReportFilters>\n    implements IFormReportFilters\n{\n    public showEmptySelection = ['worktimegroup'];\n\n    @tracked public values: any = {};\n    @tracked public showColumns = '';\n    @tracked public filterOrder: any = [];\n    @tracked public showFilterOptions: any = false;\n    @tracked public hiddenFilters: any = [];\n    @tracked public addedFilters: any = [];\n\n    @service private forms: any;\n    @service('addon/collector' as any) private collector: any;\n    @service private intl: any;\n    @service private analytics: any;\n    @service private localstorage: any;\n    @service('collector-service' as any) private Collector: any;\n\n    constructor(owner: unknown, args: IFormReportFilters) {\n        super(owner, args);\n        // close more filters dropdown when clicking outside\n        window.onclick = (event: any) => {\n            if (!this.showFilterOptions) return;\n            const parentClassList = event.target.classList;\n            if (\n                parentClassList.contains('add-filters-button') ||\n                parentClassList.contains('dropdown-item') ||\n                parentClassList.contains('move-Plus')\n            )\n                return;\n            this.showFilterOptions = false;\n        };\n        //set added filters from ls if found\n        if (this.localstorage.getItem(this.args.localStorageKey + '_added_filtters')) {\n            this.addedFilters = this.localstorage.getItem(\n                this.args.localStorageKey + '_added_filtters',\n            );\n        }\n    }\n\n    get showAddFiltersButton() {\n        return (\n            this.hiddenFilters.length &&\n            !this.args.templateInUse &&\n            !this.args.hideAdditionalFiltersButton\n        );\n    }\n\n    get form() {\n        return this.args.form;\n    }\n\n    get filters(): IFormField[] {\n        const allowFilters = [\n            'date',\n            'database',\n            'dropdown_values',\n            'status',\n            'multiselect',\n            'dropdown_userlevel',\n            'databasearray',\n            'checkbox',\n            'timeclean_imei',\n        ];\n        // @ts-ignore\n        let fieldArray = this.forms.fieldArray(this.form).map((field) => {\n            if (field.type === 'datetime') field.type = 'date';\n            field.field = field.name;\n            return field;\n        });\n\n        fieldArray = fieldArray.filter((field: IFormField) => {\n            if (!allowFilters.includes(field.type)) return false;\n            if (field.features?.hide_filter) return false; // hide_filter feature hides filter\n            if (field.options?.form == 'trnotice') return false;\n\n            return true;\n        });\n        let splitParams: any = [];\n        if (this.args.custParams) {\n            splitParams = this.args.custParams.includes(':')\n                ? this.args.custParams.split(':')\n                : this.args.custParams.split('_');\n        }\n        // @ts-ignore\n        fieldArray.forEach((item, index) => {\n            if (!isEmpty(splitParams) && splitParams[0] === item.name)\n                fieldArray[index].value = this.args.values[this.args.custParams as string];\n            else fieldArray[index].value = this.getFilterValue(item.name);\n            fieldArray[index].label = this.collector.getTranslationForColumn(this.form, item.name);\n            fieldArray[index].prompt = this.intl.t('select.all');\n            fieldArray[index].data_name = item.form + '-' + item.name;\n            // set reloads and other filtering options\n            fieldArray[index].filterOptions = this.getDropdownFiltteringOptions(item, fieldArray);\n        });\n\n        const additionalFilters = this.args.additional\n            ? this.getAdditionalFilters(this.args.additional)\n            : [];\n\n        let search: any = {\n            type: 'searchbox',\n            name: 'q',\n            label: this.intl.t('general.search'),\n            value: this.args.values.q ? this.args.values.q : null,\n            form: '',\n            data_name: 'search',\n        };\n\n        let groupBy: any = {\n            type: 'groupBy',\n            name: 'groupBy',\n            label: this.intl.t('general.groupby'),\n            value: this.args.values.groupBy ? this.args.values.groupBy : null,\n            form: this.args.form,\n            data_name: 'groupby',\n        };\n\n        let locked: any = {\n            type: 'dropdown_values',\n            name: 'row_info_status',\n            label: this.intl.t('filters.locked'),\n            value: this.args.values.row_info_status ? this.args.values.row_info_status : null,\n            form: this.args.form,\n            data_name: 'row_info_status',\n            options: [\n                { id: 'locked', value: this.intl.t('filters.show_locked') },\n                { id: 'normal', value: this.intl.t('filters.show_unlocked') },\n            ],\n            prompt: this.intl.t('select.all'),\n        };\n        fieldArray.push(locked);\n\n        let allFields = fieldArray;\n\n        if (this.args.showColumns) {\n            // @ts-ignore\n            fieldArray = fieldArray.filter((item) => {\n                //show default filters\n                if (this.args.showColumns.split(',').includes(item.name)) return true;\n                //show added filters\n                if (this.addedFilters.includes(item.name)) {\n                    item.removable = true;\n                    return true;\n                }\n            });\n\n            // if showColumns is in use show fresearch only if given\n            if (!this.args.showColumns.split(',').includes('q')) search = null;\n\n            // if showColumns is in use show groupBy only if given\n            if (!this.args.showColumns.split(',').includes('groupBy')) groupBy = null;\n        }\n\n        const filterArr = fieldArray.concat(additionalFilters);\n        let newArr: any = [];\n        let removableFilters: any = [];\n        if (this.args.filterOrder) {\n            // @ts-ignore\n            filterArr.forEach((field) => {\n                if (field.removable) return (removableFilters[this.getIndex(field.name)] = field);\n                const index = this.args.filterOrder.findIndex(\n                    (ord: { name: string; form: string }) => {\n                        return ord.name === field.name && ord.form === field.form;\n                    },\n                );\n                if (index >= 0) newArr[index] = field;\n                else newArr.push(field);\n            });\n        }\n\n        newArr = this.checkSearchAndGroupBy(!isEmpty(newArr) ? newArr : filterArr, search, groupBy);\n\n        //add removable filters at the end of the array\n        newArr = newArr.pushObjects(removableFilters);\n\n        //remove falsy values (i.e. undefined or null) from array\n        newArr = newArr.filter((row: any) => row);\n\n        //set hidden filters that can be added to filters\n        this.hiddenFilters = allFields.filter((item: any) => !newArr.findBy('name', item.name));\n        return newArr;\n    }\n\n    /**\n     * custom_field is used with additional filters\n     * @param {string} custom_field\n     * @param {any} value\n     * @param {string} field\n     */\n    @action\n    public filterChange(customField: string, value: any, field: string) {\n        if (!field && !customField) return;\n        if (customField) field = customField;\n        this.analytics.trackEvent({\n            category: this.form + ' report filters',\n            action: field,\n            label: 'tt4-addon-report',\n        });\n        if (this.args.change) this.args.change(value, field);\n        if (this.args.filterChangeAction) {\n            this.args.filterChangeAction(value, field);\n        }\n        notifyPropertyChange(this, 'filters');\n    }\n\n    @action\n    public clearFilters() {\n        this.analytics.trackEvent({\n            category: this.form + ' report filters',\n            action: 'clear filters',\n            label: 'tt4-addon-report',\n        });\n        if (this.args.clearFilters) this.args.clearFilters();\n        notifyPropertyChange(this, 'filters');\n        this.filters.forEach((filter) => {\n            const value = filter.value ? filter.value : '';\n            if (this.args.filterChangeAction) this.args.filterChangeAction(value, filter.name);\n        });\n    }\n\n    @action\n    public addFilter(filter: any) {\n        this.analytics.trackEvent({\n            category: this.form + ' report add custom filter',\n            action: filter,\n            label: 'tt4-addon-report',\n        });\n        this.addedFilters.pushObject(filter.name);\n        this.localstorage.setItem(this.args.localStorageKey + '_added_filtters', this.addedFilters);\n        notifyPropertyChange(this, 'filters');\n    }\n\n    @action\n    public hideFilter(filter: any) {\n        if (filter.value) this.filterChange('', null, filter.name);\n        this.analytics.trackEvent({\n            category: this.form + ' report hide custom filter',\n            action: filter,\n            label: 'tt4-addon-report',\n        });\n        this.addedFilters.removeObject(filter.name);\n        this.localstorage.setItem(this.args.localStorageKey + '_added_filtters', this.addedFilters);\n        notifyPropertyChange(this, 'filters');\n    }\n\n    /**\n     * additional filters are given ie. 'project.owner,user.lastname'\n     * @param {string} add\n     */\n    public getAdditionalFilters(add: string) {\n        const ret = [];\n        for (const field of add.split(',')) {\n            const fieldArr = field.split('.');\n            const filterIndex = fieldArr.length > 2 ? 1 : 0;\n            // @ts-ignore\n            const fields = this.forms.fieldArray(fieldArr[0]).filter((f) => {\n                return f.name === fieldArr[filterIndex + 1];\n            });\n            if (isEmpty(fields)) continue;\n            fields[0].label = fields[0].translated_name;\n            fields[0].customfield = fieldArr[filterIndex] + '[' + fieldArr[filterIndex + 1] + ']';\n            fields[0].prompt = this.intl.t('select.all');\n            fields[0].data_name = fields[0].form + '-' + fields[0].name;\n\n            if (this.args.values[fields[0].customfield])\n                fields[0].value = this.args.values[fields[0].customfield];\n            ret.push(fields[0]);\n        }\n\n        return ret;\n    }\n\n    private checkSearchAndGroupBy(arr: any, search: {} | null, groupBy: {} | null): [] {\n        arr = search ? arr.concat([search]) : arr;\n        arr = groupBy ? arr.concat([groupBy]) : arr;\n        return arr;\n    }\n\n    private getIndex(fieldName: string) {\n        return this.addedFilters.findIndex((item: any) => item === fieldName);\n    }\n\n    private getFilterValue(field: string) {\n        if (this.args.values[field]) return this.args.values[field];\n        if (this.args.values[field + '[id]']) return this.args.values[field + '[id]'];\n        else if (this.args.values['filter[attributes.' + field + ']'])\n            return this.args.values['filter[attributes.' + field + ']'];\n        else if (this.args.values['filter[relationships.' + field + '.data.id]'])\n            return this.args.values['filter[relationships.' + field + '.data.id]'];\n        else return null;\n    }\n\n    /**\n     * get options for filtering dropdown options by other filters values\n     * ie. filter subprojects dropdown options by selected value in project filter\n     * returns object<field:id> { project:12345 }\n     */\n    private getDropdownFiltteringOptions(\n        field: IFormField,\n        filters: IFormField[],\n    ): { field: string; id: string } {\n        let dependencies: { field: object; filter: string }[] = [];\n        filters = filters.concat(\n            this.args.additional ? this.getAdditionalFilters(this.args.additional) : [],\n        ); //add additional filters\n        filters.forEach((filterField: IFormField) => {\n            // get links from collector service and set them as dependencies\n            let links = this.Collector.getDropdownDepency(filterField.name);\n            links.map((link: { field: string; filter: string }) => {\n                if (link.field === field.name)\n                    dependencies.push({ field: filterField, filter: filterField.options?.form });\n            });\n            // set fields reload features as dependencies\n            // Ie. project reloads subproject, so subproject gets {project: <projectid>} in filterOptions and subprojects are filtered by project\n            const reloadInCurrentField =\n                isPresent(filterField.features?.reload) &&\n                filterField.features?.reload == field.name;\n            // Ie. some field reloads project, so some field gets {project: <projectid>} in filterOptions and some field is filtered by project\n            const reloadInOtherField =\n                isPresent(field.features?.reload) && field.features?.reload == filterField.name;\n            if (reloadInCurrentField || reloadInOtherField) {\n                dependencies.push({ field: filterField, filter: filterField.options?.form });\n            }\n        });\n\n        let options: any = {};\n        dependencies.forEach((filtering: { filter: string; field: { value: { id: string } } }) => {\n            if (typeOf(filtering.field.value) == 'object') {\n                options[filtering.filter] = filtering.field.value ? filtering.field.value.id : null;\n            } else {\n                options[filtering.filter] = filtering.field.value ? filtering.field.value : null;\n            }\n        });\n\n        return options;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<DumpDev @text=\\\"addon form-report migrated to tt4\\\" />\\n\\n\\n{{#if @blockFilters}}\\n\\n{{yield (hash\\n    filters=(component \\\"addon/form-report-filters\\\"\\n        showColumns=this.showFilters\\n        additional=this.additionalFilters\\n        form=this.form\\n        change=(action \\\"filterChange\\\")\\n        values=this.queryParams\\n        filterOrder=this.filterOrder\\n        clearFilters=(action \\\"clearFilters\\\")\\n        useMultiFilter=this.useMultiFilter\\n        filterChangeAction=(action \\\"filterChangeAction\\\")\\n        custParams=this.custParams\\n        templateInUse=this.currentFormTemplate\\n        hideAdditionalFiltersButton=@hideAdditionalFiltersButton\\n        localStorageKey=this.localStorageKey\\n    )\\n    )}}\\n\\n{{else}}\\n\\n<Addon::FormReportFilters\\n    @showColumns={{this.showFilters}}\\n    @additional={{this.additionalFilters}}\\n    @form={{this.form}}\\n    @values={{this.queryParams}}\\n    @filterOrder={{this.filterOrder}}\\n    @change={{fn this.filterChange}}\\n    @clearFilters={{fn this.clearFilters}}\\n    @useMultiFilter={{this.useMultiFilter}}\\n    @filterChangeAction={{fn this.filterChangeAction}}\\n    @custParams={{this.custParams}}\\n    @templateInUse={{this.currentFormTemplate}}\\n    @hideAdditionalFiltersButton={{@hideAdditionalFiltersButton}}\\n    @localStorageKey={{this.localStorageKey}}\\n/>\\n\\n{{/if}}\\n\\n{{yield (hash\\n            Add=(component \\\"addon/form-report/add\\\" onClick=(fn this.add))\\n        )}}\\n\\n<div class=\\\"ember-movenium-table-container\\\">\\n    {{#if (has-block)}}\\n        {{yield (hash\\n                    Table=(component \\\"addon/form-report/table\\\"\\n                        data=this.data\\n                        errors=this.errors\\n                        form=this.form\\n                        sorts=this.sorts\\n                        columns=this.columns\\n                        allColumns=this.allColumns\\n                        selectable=this.selectable\\n                        inlineEdit=this.inlineEdit\\n                        rowActions=this.rowActions\\n                        statusTypes=this.statusTypes\\n                        rowsPerPage=this.rowsPerPage\\n                        showLoader=this.showLoader\\n                        showRemoved=this.showRemoved\\n                        showLocationMap=this.showLocationMap\\n                        locationMarkers=this.locationMarkers\\n                        startEndMarkers=this.startEndMarkers\\n                        formReportTemplates=this.formReportTemplates\\n                        currentFormTemplate=this.currentFormTemplate\\n                        showOnlySum=this.showOnlySum\\n                        actionBar=(component \\\"addon/form-report/action-bar\\\" actionClicked=(fn this.actionClicked))\\n                        updateSorts=(fn this.updateSorts)\\n                        saveRows=(fn this.saveRows)\\n                        toggleInlineEdit=(fn this.toggleInlineEdit)\\n                        setRowsPerPage=(fn this.setRowsPerPage)\\n                        exportPdf=(fn this.exportPdf)\\n                        exportCsv=(fn this.exportCsv)\\n                        showOrHideRemoved=(fn this.showOrHideRemoved)\\n                        openExportModal=(fn this.openExportModal)\\n                        refreshReport=(fn this.reload)\\n                        changeStatus=(fn this.changeStatus)\\n                        handleLock=(fn this.handleLock)\\n                        handleRemove=(fn this.handleRemove)\\n                        columnsChanged=(fn this.columnsChanged)\\n                        openGpsMap=(fn this.openGpsMap)\\n                        activateTemplate=(fn this.activateTemplate)\\n                        deactivateTemplate=(fn this.deactivateTemplate)\\n                        editTemplate=(fn this.editTemplate)\\n                        removeTemplate=(fn this.removeTemplate)\\n                        openTemplateModal=(fn this.openTemplateModal)\\n                        sumReport=this.sumReport\\n                        mergeTemplates=this.mergeTemplates\\n                        localStorageKey=this.localStorageKey\\n                        oldTemplateFromLS=this.oldTemplateFromLS\\n                        saveResize=(fn this.saveResize)\\n                        columnSizes=this.columnSizes\\n                        selected=this.selectedRows\\n                        setSelectedRows=(fn this.setSelectedRows)\\n                        additionalMeta=this.additionalMeta\\n\\n                    )\\n                )}}\\n    {{else}}\\n        <Addon::FormReport::Table\\n            @data={{this.data}}\\n            @form={{this.form}}\\n            @sorts={{this.sorts}}\\n            @columns={{this.columns}}\\n            @allColumns={{this.allColumns}}\\n            @selectable={{this.selectable}}\\n            @inlineEdit={{this.inlineEdit}}\\n            @rowActions={{this.rowActions}}\\n            @statusTypes={{this.statusTypes}}\\n            @rowsPerPage={{this.rowsPerPage}}\\n            @showLoader={{this.showLoader}}\\n            @showRemoved={{this.showRemoved}}\\n            @formReportTemplates={{this.formReportTemplates}}\\n            @currentFormTemplate={{this.currentFormTemplate}}\\n            @showOnlySum={{this.showOnlySum}}\\n            @updateSorts={{fn this.updateSorts}}\\n            @saveRows={{fn this.saveRows}}\\n            @toggleInlineEdit={{fn this.toggleInlineEdit}}\\n            @setRowsPerPage={{fn this.setRowsPerPage}}\\n            @exportPdf={{fn this.exportPdf}}\\n            @exportCsv={{fn this.exportCsv}}\\n            @showOrHideRemoved={{fn this.showOrHideRemoved}}\\n            @openExportModal={{fn this.openExportModal}}\\n            @refreshReport={{fn this.reload}}\\n            @columnsChanged={{fn this.columnsChanged}}\\n            @handleRemove={{fn this.handleRemove}}\\n            @handleLock={{fn this.handleLock}}\\n            @changeStatus={{fn this.changeStatus}}\\n            @actionBar={{component \\\"addon/form-report/action-bar\\\" actionClicked=(fn this.actionClicked)}}\\n            @activateTemplate={{fn this.activateTemplate}}\\n            @deactivateTemplate={{fn this.deactivateTemplate}}\\n            @editTemplate={{fn this.editTemplate}}\\n            @removeTemplate={{fn this.removeTemplate}}\\n            @openTemplateModal={{fn this.openTemplateModal}}\\n            @sumReport={{this.sumReport}}\\n            @mergeTemplates={{this.mergeTemplates}}\\n            @localStorageKey={{this.localStorageKey}}\\n            @oldTemplateFromLS={{this.oldTemplateFromLS}}\\n            @saveResize={{fn this.saveResize}}\\n            @columnSizes={{this.columnSizes}}\\n            @selected={{this.selectedRows}}\\n            @setSelectedRows={{fn this.setSelectedRows}}\\n            @additionalMeta={{this.additionalMeta}}\\n\\n        />\\n    {{/if}}\\n\\n    {{#unless this.showOnlySum}}\\n        <div class=\\\"total-rows\\\" data-anchor=\\\"worktime-report-rows-total\\\">\\n            <b class=\\\"text-muted\\\">{{t \\\"report.total_rows\\\"}}:</b>\\n            <span class=\\\"badge\\\">{{this.totalRows}}</span>\\n        </div>\\n    {{/unless}}\\n\\n    <Addon::PagiNation\\n        @rowsPerPage={{this.rowsPerPage}}\\n        @currentPage={{this.currentPage}}\\n        @pageCount={{this.pageCount}}\\n        @pageChange={{fn this.pageChange}}\\n    />\\n\\n\\n</div>\\n\\n{{#if this.showForm}}\\n    <Addon::Modal @close={{this.closeEditModal}} @classes=\\\"ember-movenium-form-report-form-add-modal\\\" as |M|>\\n        <M.Header>{{t (concat \\\"menu.add_\\\" this.form)}}</M.Header>\\n        <M.Body>\\n            <Addon::FormAdd @only={{@showColumns}}\\n                     @form={{this.form}}\\n                     @rowAdded={{this.reload}}\\n                     @record={{this.showForm}}\\n                     @close={{fn (mut this.showForm) null}}\\n                     @onFieldChange={{this.fieldChanged}}\\n            />\\n        </M.Body>\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#if this.showHistory}}\\n    <NiceModal @header={{t \\\"rowhistory.title\\\"}} @close={{fn (mut this.showHistory) null}}>\\n        <div class=\\\"modal-history-content\\\">\\n            <Collector::HistoryComp @row={{this.showHistory.id}} @form={{this.form}} @hideTitle={{true}} />\\n        </div>\\n    </NiceModal>\\n{{/if}}\\n\\n{{#if this.showOverview}}\\n    <Addon::Modal @close={{fn (mut this.showOverview) null}} @classes=\\\"ember-movenium-form-report-form-add-modal\\\" as |M|>\\n        <M.Header>{{t \\\"header.path.show\\\"}}</M.Header>\\n        <M.Body>\\n            <h2>{{this.overviewHeader}}</h2>\\n            <RecordList @fields={{this.fields}} @model={{this.showOverview}} />\\n        </M.Body>\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#if this.showFastExporter}}\\n    <Addon::Modal @close={{fn (mut this.showFastExporter) false}} @classes=\\\"ember-movenium-form-report-form-add-modal\\\" as |M|>\\n        <M.Header>{{t \\\"fastexport.header\\\"}}</M.Header>\\n        <M.Body>\\n            <FastExporter @form={{this.form}} @dates={{this.datesForFastExporter}} @close={{fn (mut this.showFastExporter) false}} />\\n        </M.Body>\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#if this.showChangeStatusForAllPages}}\\n    <ChangeStatus @close={{fn this.closeShowChangeStatusForAllPages}} @params={{this.changeStatusForAllPagesParams}} />\\n{{/if}}\\n\\n{{#if this.showExportModal}}\\n    <ExportModal\\n        @initType={{this.exportInitType}}\\n        @showExportModal={{this.showExportModal}}\\n        @includeApprovalLink={{this.includeApprovalLink}}\\n        @statusFieldIsVisible={{this.statusFieldIsVisible}}\\n        @form={{this.form}}\\n        @showApprovalLinkSelection={{this.showApprovalLinkSelection}}\\n        @count={{this.emailSendingCount}}\\n        @emailSent={{this.emailSent}}\\n        @loading={{this.showLoader}}\\n        @emailError={{this.emailError}}\\n        @removeModal={{fn (mut this.showExportModal) false}}\\n        @sendEmailAction={{fn this.sendEmail}}\\n        @exportActions={{fn this.handleExportActions}}\\n        @showExcelSumCheckbox={{true}}\\n    />\\n{{/if}}\\n\\n{{#if this.filtersModal}}\\n    <Addon::ReportTemplateWizard\\n        @columns={{this.allColumns}}\\n        @form={{this.form}}\\n        @filter={{@filter}}\\n        @templateValues={{this.templateValues}}\\n        @saveTemplate={{fn this.saveTemplate}}\\n        @close={{fn (mut this.filtersModal) false}}\\n        @additionalFilters={{@additional}}\\n    />\\n{{/if}}\\n\", {\"contents\":\"<DumpDev @text=\\\"addon form-report migrated to tt4\\\" />\\n\\n\\n{{#if @blockFilters}}\\n\\n{{yield (hash\\n    filters=(component \\\"addon/form-report-filters\\\"\\n        showColumns=this.showFilters\\n        additional=this.additionalFilters\\n        form=this.form\\n        change=(action \\\"filterChange\\\")\\n        values=this.queryParams\\n        filterOrder=this.filterOrder\\n        clearFilters=(action \\\"clearFilters\\\")\\n        useMultiFilter=this.useMultiFilter\\n        filterChangeAction=(action \\\"filterChangeAction\\\")\\n        custParams=this.custParams\\n        templateInUse=this.currentFormTemplate\\n        hideAdditionalFiltersButton=@hideAdditionalFiltersButton\\n        localStorageKey=this.localStorageKey\\n    )\\n    )}}\\n\\n{{else}}\\n\\n<Addon::FormReportFilters\\n    @showColumns={{this.showFilters}}\\n    @additional={{this.additionalFilters}}\\n    @form={{this.form}}\\n    @values={{this.queryParams}}\\n    @filterOrder={{this.filterOrder}}\\n    @change={{fn this.filterChange}}\\n    @clearFilters={{fn this.clearFilters}}\\n    @useMultiFilter={{this.useMultiFilter}}\\n    @filterChangeAction={{fn this.filterChangeAction}}\\n    @custParams={{this.custParams}}\\n    @templateInUse={{this.currentFormTemplate}}\\n    @hideAdditionalFiltersButton={{@hideAdditionalFiltersButton}}\\n    @localStorageKey={{this.localStorageKey}}\\n/>\\n\\n{{/if}}\\n\\n{{yield (hash\\n            Add=(component \\\"addon/form-report/add\\\" onClick=(fn this.add))\\n        )}}\\n\\n<div class=\\\"ember-movenium-table-container\\\">\\n    {{#if (has-block)}}\\n        {{yield (hash\\n                    Table=(component \\\"addon/form-report/table\\\"\\n                        data=this.data\\n                        errors=this.errors\\n                        form=this.form\\n                        sorts=this.sorts\\n                        columns=this.columns\\n                        allColumns=this.allColumns\\n                        selectable=this.selectable\\n                        inlineEdit=this.inlineEdit\\n                        rowActions=this.rowActions\\n                        statusTypes=this.statusTypes\\n                        rowsPerPage=this.rowsPerPage\\n                        showLoader=this.showLoader\\n                        showRemoved=this.showRemoved\\n                        showLocationMap=this.showLocationMap\\n                        locationMarkers=this.locationMarkers\\n                        startEndMarkers=this.startEndMarkers\\n                        formReportTemplates=this.formReportTemplates\\n                        currentFormTemplate=this.currentFormTemplate\\n                        showOnlySum=this.showOnlySum\\n                        actionBar=(component \\\"addon/form-report/action-bar\\\" actionClicked=(fn this.actionClicked))\\n                        updateSorts=(fn this.updateSorts)\\n                        saveRows=(fn this.saveRows)\\n                        toggleInlineEdit=(fn this.toggleInlineEdit)\\n                        setRowsPerPage=(fn this.setRowsPerPage)\\n                        exportPdf=(fn this.exportPdf)\\n                        exportCsv=(fn this.exportCsv)\\n                        showOrHideRemoved=(fn this.showOrHideRemoved)\\n                        openExportModal=(fn this.openExportModal)\\n                        refreshReport=(fn this.reload)\\n                        changeStatus=(fn this.changeStatus)\\n                        handleLock=(fn this.handleLock)\\n                        handleRemove=(fn this.handleRemove)\\n                        columnsChanged=(fn this.columnsChanged)\\n                        openGpsMap=(fn this.openGpsMap)\\n                        activateTemplate=(fn this.activateTemplate)\\n                        deactivateTemplate=(fn this.deactivateTemplate)\\n                        editTemplate=(fn this.editTemplate)\\n                        removeTemplate=(fn this.removeTemplate)\\n                        openTemplateModal=(fn this.openTemplateModal)\\n                        sumReport=this.sumReport\\n                        mergeTemplates=this.mergeTemplates\\n                        localStorageKey=this.localStorageKey\\n                        oldTemplateFromLS=this.oldTemplateFromLS\\n                        saveResize=(fn this.saveResize)\\n                        columnSizes=this.columnSizes\\n                        selected=this.selectedRows\\n                        setSelectedRows=(fn this.setSelectedRows)\\n                        additionalMeta=this.additionalMeta\\n\\n                    )\\n                )}}\\n    {{else}}\\n        <Addon::FormReport::Table\\n            @data={{this.data}}\\n            @form={{this.form}}\\n            @sorts={{this.sorts}}\\n            @columns={{this.columns}}\\n            @allColumns={{this.allColumns}}\\n            @selectable={{this.selectable}}\\n            @inlineEdit={{this.inlineEdit}}\\n            @rowActions={{this.rowActions}}\\n            @statusTypes={{this.statusTypes}}\\n            @rowsPerPage={{this.rowsPerPage}}\\n            @showLoader={{this.showLoader}}\\n            @showRemoved={{this.showRemoved}}\\n            @formReportTemplates={{this.formReportTemplates}}\\n            @currentFormTemplate={{this.currentFormTemplate}}\\n            @showOnlySum={{this.showOnlySum}}\\n            @updateSorts={{fn this.updateSorts}}\\n            @saveRows={{fn this.saveRows}}\\n            @toggleInlineEdit={{fn this.toggleInlineEdit}}\\n            @setRowsPerPage={{fn this.setRowsPerPage}}\\n            @exportPdf={{fn this.exportPdf}}\\n            @exportCsv={{fn this.exportCsv}}\\n            @showOrHideRemoved={{fn this.showOrHideRemoved}}\\n            @openExportModal={{fn this.openExportModal}}\\n            @refreshReport={{fn this.reload}}\\n            @columnsChanged={{fn this.columnsChanged}}\\n            @handleRemove={{fn this.handleRemove}}\\n            @handleLock={{fn this.handleLock}}\\n            @changeStatus={{fn this.changeStatus}}\\n            @actionBar={{component \\\"addon/form-report/action-bar\\\" actionClicked=(fn this.actionClicked)}}\\n            @activateTemplate={{fn this.activateTemplate}}\\n            @deactivateTemplate={{fn this.deactivateTemplate}}\\n            @editTemplate={{fn this.editTemplate}}\\n            @removeTemplate={{fn this.removeTemplate}}\\n            @openTemplateModal={{fn this.openTemplateModal}}\\n            @sumReport={{this.sumReport}}\\n            @mergeTemplates={{this.mergeTemplates}}\\n            @localStorageKey={{this.localStorageKey}}\\n            @oldTemplateFromLS={{this.oldTemplateFromLS}}\\n            @saveResize={{fn this.saveResize}}\\n            @columnSizes={{this.columnSizes}}\\n            @selected={{this.selectedRows}}\\n            @setSelectedRows={{fn this.setSelectedRows}}\\n            @additionalMeta={{this.additionalMeta}}\\n\\n        />\\n    {{/if}}\\n\\n    {{#unless this.showOnlySum}}\\n        <div class=\\\"total-rows\\\" data-anchor=\\\"worktime-report-rows-total\\\">\\n            <b class=\\\"text-muted\\\">{{t \\\"report.total_rows\\\"}}:</b>\\n            <span class=\\\"badge\\\">{{this.totalRows}}</span>\\n        </div>\\n    {{/unless}}\\n\\n    <Addon::PagiNation\\n        @rowsPerPage={{this.rowsPerPage}}\\n        @currentPage={{this.currentPage}}\\n        @pageCount={{this.pageCount}}\\n        @pageChange={{fn this.pageChange}}\\n    />\\n\\n\\n</div>\\n\\n{{#if this.showForm}}\\n    <Addon::Modal @close={{this.closeEditModal}} @classes=\\\"ember-movenium-form-report-form-add-modal\\\" as |M|>\\n        <M.Header>{{t (concat \\\"menu.add_\\\" this.form)}}</M.Header>\\n        <M.Body>\\n            <Addon::FormAdd @only={{@showColumns}}\\n                     @form={{this.form}}\\n                     @rowAdded={{this.reload}}\\n                     @record={{this.showForm}}\\n                     @close={{fn (mut this.showForm) null}}\\n                     @onFieldChange={{this.fieldChanged}}\\n            />\\n        </M.Body>\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#if this.showHistory}}\\n    <NiceModal @header={{t \\\"rowhistory.title\\\"}} @close={{fn (mut this.showHistory) null}}>\\n        <div class=\\\"modal-history-content\\\">\\n            <Collector::HistoryComp @row={{this.showHistory.id}} @form={{this.form}} @hideTitle={{true}} />\\n        </div>\\n    </NiceModal>\\n{{/if}}\\n\\n{{#if this.showOverview}}\\n    <Addon::Modal @close={{fn (mut this.showOverview) null}} @classes=\\\"ember-movenium-form-report-form-add-modal\\\" as |M|>\\n        <M.Header>{{t \\\"header.path.show\\\"}}</M.Header>\\n        <M.Body>\\n            <h2>{{this.overviewHeader}}</h2>\\n            <RecordList @fields={{this.fields}} @model={{this.showOverview}} />\\n        </M.Body>\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#if this.showFastExporter}}\\n    <Addon::Modal @close={{fn (mut this.showFastExporter) false}} @classes=\\\"ember-movenium-form-report-form-add-modal\\\" as |M|>\\n        <M.Header>{{t \\\"fastexport.header\\\"}}</M.Header>\\n        <M.Body>\\n            <FastExporter @form={{this.form}} @dates={{this.datesForFastExporter}} @close={{fn (mut this.showFastExporter) false}} />\\n        </M.Body>\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#if this.showChangeStatusForAllPages}}\\n    <ChangeStatus @close={{fn this.closeShowChangeStatusForAllPages}} @params={{this.changeStatusForAllPagesParams}} />\\n{{/if}}\\n\\n{{#if this.showExportModal}}\\n    <ExportModal\\n        @initType={{this.exportInitType}}\\n        @showExportModal={{this.showExportModal}}\\n        @includeApprovalLink={{this.includeApprovalLink}}\\n        @statusFieldIsVisible={{this.statusFieldIsVisible}}\\n        @form={{this.form}}\\n        @showApprovalLinkSelection={{this.showApprovalLinkSelection}}\\n        @count={{this.emailSendingCount}}\\n        @emailSent={{this.emailSent}}\\n        @loading={{this.showLoader}}\\n        @emailError={{this.emailError}}\\n        @removeModal={{fn (mut this.showExportModal) false}}\\n        @sendEmailAction={{fn this.sendEmail}}\\n        @exportActions={{fn this.handleExportActions}}\\n        @showExcelSumCheckbox={{true}}\\n    />\\n{{/if}}\\n\\n{{#if this.filtersModal}}\\n    <Addon::ReportTemplateWizard\\n        @columns={{this.allColumns}}\\n        @form={{this.form}}\\n        @filter={{@filter}}\\n        @templateValues={{this.templateValues}}\\n        @saveTemplate={{fn this.saveTemplate}}\\n        @close={{fn (mut this.filtersModal) false}}\\n        @additionalFilters={{@additional}}\\n    />\\n{{/if}}\\n\",\"moduleName\":\"tt4/components/addon/form-report.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report.hbs\"}});\nimport Ember from 'ember';\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, get, set, setProperties, notifyPropertyChange } from '@ember/object';\nimport { next } from '@ember/runloop';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { isPresent, isEmpty, typeOf } from '@ember/utils';\nimport { A } from '@ember/array';\nimport { save_record } from 'tt4/ember-movenium/utils/save-the-children';\nimport { createPdfFromElements } from 'tt4/ember-movenium/utils/pdf-export';\nimport { defer } from 'rsvp';\nimport { pluralize } from 'ember-inflector';\nimport moment from 'moment';\nimport { getSums } from 'tt4/ember-movenium/utils/sumrow';\nimport { isHTMLSafe } from '@ember/template';\n\n/**\n *\n * report for collector form\n *\n * ```hbs\n *  <Addon::FormReport @form=\"worktime\" as |report|>\n <report.filters />\n <report.table />\n </Addon::FormReport>\n * ```\n *\n * ```\n * parameters:\n *      form: name of the form (mandatory)\n *      filter: object containing list of filters that are added to every query.\n *              When used also created records will automatically have these set\n *      showColumns: List of columns to show on report. Also adding and editing form is affected by this.\n *      filterByValues: object containing default-values for filters\n * ```\n *\n * ```\n * objects:\n *      filters: filter bar for report.\n *      showColumns: list of columns to be shown\n *      add: if used plus button is added above the table\n *      table: the table it self\n *      rowActions: list of actions to show for rows separated with comma. default: edit\n *\n *  ```\n * @class FormReportComponent\n * @constructor\n */\n/* istanbul ignore next: too much tt4 stuff in actions, issues created */\nexport default class FormReportComponent extends Component {\n    @service store;\n    @service session;\n    @service forms;\n    @service dialogs;\n    @service intl;\n    @service notifications;\n    @service('error-handler') error;\n    @service apiservice;\n    @service router;\n    @service('collector-service') Collector;\n    @service collector;\n    @service localStorageWrapper;\n    @service localstorage;\n    @service('own-cordova-service') cordova;\n    @service('file-exports') fileExports;\n    @service evented;\n    @service analytics;\n    @service surveys;\n\n    @tracked form;\n    @tracked columns;\n    @tracked data;\n    @tracked formReportTemplates;\n    @tracked sorts;\n    @tracked showForm;\n    @tracked fields;\n    @tracked showOverview;\n    @tracked showFastExporter;\n    @tracked datesForFastExporter;\n    @tracked selectedRows;\n\n    constructor() {\n        super(...arguments);\n        //this.filterByValues = null\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.rowsPerPage = 25;\n        this.currentPage = 1;\n        (this.rowActions = 'edit,history,remove,overview'), (this.selectedRows = []);\n        this.form = this.args.form;\n        this.showRemoved = this.args.showRemoved || false;\n        this.useMultiFilter = isPresent(this.args.useMultiFilter) ? this.args.useMultiFilter : true;\n        this.showFilters = this.args.showFilters || '';\n        this.additionalFilters = this.args.additional || '';\n        this.showOnlySum = false;\n        this.changeStatusForAllPagesParams = {};\n        this.groupableColumns = [\n            'date',\n            'number',\n            'hours',\n            'price',\n            'big_price',\n            'dropdown_values',\n            'dropdown_options',\n        ];\n\n        this.localStorageKey = this.args.localStorageKey ? this.args.localStorageKey : this.form;\n        this.columnSizes = this.localstorage.getItem(this.localStorageKey + '_columnSizes') || [];\n\n        if (this.showFilters) {\n            const filterArr = this.showFilters.split(',');\n            const filteredArr = filterArr.filter((f) => this.forms.fieldExists(this.form, f));\n            this.defaultOrder = this.filterOrder = filteredArr.map((filter) =>\n                this.forms.field(this.form, filter),\n            );\n        }\n        this.setVisibleColumns();\n        this.fetchTemplates();\n\n        if (this.localstorage.getItem(this.localStorageKey + '_selectedTemplate')) {\n            this.activateTemplate(\n                this.localstorage.getItem(this.localStorageKey + '_selectedTemplate').data,\n            );\n        } else {\n            this.setDefaultLimit();\n            this.setDefaultOrder();\n\n            if (!this.filterByValues) {\n                this.filterByValues = this.args.filterByValues ? this.args.filterByValues : {};\n            }\n            this.updateReport();\n\n            // handle old templates from localstorage\n            if (this.localstorage.getItem(this.localStorageKey + '_currentTemplate')) {\n                this.oldTemplateFromLS = this.localstorage.getItem(\n                    this.localStorageKey + '_currentTemplate',\n                );\n                this.columnsChanged(\n                    this.allColumns.filter((col) =>\n                        this.oldTemplateFromLS.columns.split(',').includes(col.external_type),\n                    ),\n                );\n            }\n        }\n    }\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n    }\n\n    @alias('data.content.meta.count') metaRowCount;\n    @alias('data.meta.additional_meta') additionalMeta;\n\n    get allPagesSelected() {\n        return (\n            this.metaRowCount > this.selectedRows.length &&\n            this.selectedRows.length === this.data.length\n        );\n    }\n\n    get emailSendingCount() {\n        return this.allPagesSelected ? this.metaRowCount : this.selectedRows.length;\n    }\n\n    get statusFieldIsVisible() {\n        return this.columns.findBy('external_type', 'status');\n    }\n\n    get custParams() {\n        const formFeatures = this.forms.forms[this.args.form].features;\n\n        if (!formFeatures || !formFeatures.custom_queryparams) return null;\n        return formFeatures.custom_queryparams;\n    }\n\n    get totalRows() {\n        return this.metaRowCount || this.cachedRowCount || 0;\n    }\n\n    get pageCount() {\n        if (!this.metaRowCount && !this.cachedRowCount) return 0;\n        const count = this.metaRowCount ? this.metaRowCount : this.cachedRowCount;\n        return Math.ceil(count / this.rowsPerPage);\n    }\n\n    get queryParams() {\n        let params = {};\n\n        this.mergeFilters(params, this.args.filter);\n        this.mergeFilters(params, this.filterByValues);\n        if (this.args.jsonapi) {\n            params = this.setJsonapiParams(params);\n        }\n        if (this.args.extraParams) {\n            Object.assign(params, this.args.extraParams);\n        }\n        if(!this.args.skipCustomQueryParams) params = this.checkCustomQueryParams(params);\n        if (this.sorts && this.sorts.length) {\n            if (this.args.jsonapi) params.sort = this.createSortStringForJsonapi(this.sorts);\n            else params.order = this.createSortString(this.sorts);\n        }\n        params.limit = this.rowsPerPage;\n        params.offset = this.rowsPerPage * (this.currentPage - 1);\n        params.sideload = true;\n        if (this.showRemoved) {\n            params.row_info_status = 'removed';\n        }\n        this.setParentFieldParamsAsArray(params);\n        return params;\n    }\n\n    get allColumns() {\n        const canEdit = this.Collector.testNeeds([\n            '!' + this.form + '@errors',\n            this.form + '@edit',\n        ]);\n        let columns = this.Collector.fieldArray(this.form).map((item) => {\n            const savedSize = this.columnSizes.findBy('valuePath', item.name);\n\n            item['canEdit'] = canEdit;\n            item['valuePath'] = item.name;\n            item['external_type'] = item.name;\n\n            // set column width from ls if exists else set default\n            if (savedSize) item['width'] = get(savedSize, 'width');\n            else item['width'] = item.name === 'status' ? 50 : 80;\n\n            return item;\n        });\n\n        if (this.args.showColumns)\n            columns = columns.filter((column) =>\n                this.args.showColumns.split(',').includes(column.external_type),\n            );\n        columns = columns.filter(\n            (column) =>\n                column.features && !column.features.hide_column && !column.features.hide_tt4,\n        );\n\n        if (!this.args.hideCreatedColumn)\n            columns.push({\n                name: 'row_info.created',\n                form: this.form,\n                external_type: 'row_info.created',\n                valuePath: 'row_info.created',\n                translated_name: this.intl.t('general.row_info.created'),\n            });\n        if (!this.args.hideCreatedColumn)\n            columns.push({\n                name: 'row_info.modified',\n                form: this.form,\n                external_type: 'row_info.modified',\n                valuePath: 'row_info.modified',\n                translated_name: this.intl.t('general.row_info.modified'),\n            });\n\n        return columns;\n    }\n\n    get statusTypes() {\n        if (!this.form) return [];\n        if (!this.forms.fieldExists(this.form, 'status')) return [];\n\n        let field = this.forms.field(this.form, 'status');\n        let fieldOptions = [];\n\n        if (field.features.only_options) {\n            fieldOptions = field.features.only_options.split(',');\n        } else {\n            fieldOptions = field.options;\n        }\n        if (!fieldOptions) return []; // if status-field doesn't have any options, just return empty array\n        let options = fieldOptions.map((option) => {\n            if (this.intl.exists('status.' + option)) {\n                return { id: option, name: this.intl.t('report.' + option + '_rows') };\n            } else {\n                return { id: option, name: this.intl.t('report.change_status') + option };\n            }\n        });\n\n        return options;\n    }\n\n    get showApprovalLink() {\n        if (isEmpty(this.statusTypes)) return false;\n        return this.statusTypes.mapBy('id').includes('approved') && this.selectedRows.length;\n    }\n\n    get overviewHeader() {\n        if (!this.showOverview) return false;\n        let formaName = this.showOverview.constructor.modelName;\n        if (!formaName.includes('measurement-custom'))\n            return this.intl.t('header.path.add.' + formaName);\n        return this.forms.forms[this.form.underscore()].name;\n    }\n\n    @action\n    openTemplateModal() {\n        this.analytics.trackEvent({\n            category: this.form + ' report templates',\n            action: 'Add new template',\n            label: 'tt4-addon-report',\n        });\n        set(this, 'templateValues', null);\n        set(this, 'filtersModal', true);\n    }\n\n    @action\n    async saveTemplate(values) {\n        this.analytics.trackEvent({\n            category: this.form + ' report templates',\n            action: 'Save template',\n            label: 'tt4-addon-report',\n        });\n        let template = null;\n\n        let formattedValues = {\n            name: values.name,\n            form: this.form,\n            limit: values.limit ? values.limit : 25,\n            sums: JSON.stringify(values.sums),\n            columns: JSON.stringify(values.columns),\n            filters: JSON.stringify(values.filters),\n            filterOrder: values.filterOrder ? values.filterOrder : [],\n            sumType: values.sumType,\n            userlevels: values.userlevels,\n        };\n\n        if (this.templateValues) {\n            template = this.store.peekRecord('form-report-template', this.templateValues.id);\n            setProperties(template, formattedValues);\n            template.save();\n        } else {\n            template = await this.store\n                .createRecord('form-report-template', formattedValues)\n                .save();\n        }\n\n        this.fetchTemplates();\n        this.activateTemplate(template);\n    }\n\n    @action\n    deactivateTemplate() {\n        this.analytics.trackEvent({\n            category: this.form + ' report templates',\n            action: 'Deactivate template',\n            label: 'tt4-addon-report',\n        });\n        this.localstorage.removeItem(this.localStorageKey + '_selectedTemplate');\n        this.setVisibleColumns();\n        set(this, 'filterByValues', this.args.filter ? this.args.filter : {});\n        set(this, 'rowsPerPage', 25);\n        set(this, 'showFilters', this.args.showFilters);\n        set(this, 'additionalFilters', this.args.additional);\n        set(this, 'filterOrder', this.defaultOrder);\n        set(this, 'showOnlySum', false);\n        notifyPropertyChange(this, 'queryParams');\n        this.updateReport();\n        this.columnsChanged(this.columns);\n        set(this, 'sumReport', false);\n        set(this, 'currentFormTemplate', null);\n    }\n\n    @action\n    async activateTemplate(template) {\n        this.analytics.trackEvent({\n            category: this.form + ' report templates',\n            action: 'Activate template',\n            label: 'tt4-addon-report',\n        });\n\n        if (template.id) {\n            this.localstorage.setItem(this.localStorageKey + '_selectedTemplate', {\n                data: template,\n                current: template.id,\n            });\n        }\n        await this.setTemplateValues(template);\n        this.updateReport();\n        const templateColumns = JSON.parse(template.columns).filter(\n            (col) =>\n                this.forms.fieldExists(this.form, col.external_type) ||\n                col.valuePath.includes('row_info.'),\n        );\n        this.columnsChanged(templateColumns);\n    }\n\n    @action\n    editTemplate(template) {\n        this.analytics.trackEvent({\n            category: this.form + ' report templates',\n            action: 'Edit template',\n            label: 'tt4-addon-report',\n        });\n        set(this, 'templateValues', template);\n        set(this, 'filtersModal', true);\n    }\n\n    @action\n    async removeTemplate(template) {\n        this.analytics.trackEvent({\n            category: this.form + ' report templates',\n            action: 'Remove template',\n            label: 'tt4-addon-report',\n        });\n        const con = await this.dialogs.confirm(this.intl.t('report.template.confirm_remove'));\n        if (con) {\n            if (template.id === this.currentFormTemplate) this.deactivateTemplate();\n            await template.destroyRecord();\n        }\n        this.fetchTemplates();\n        notifyPropertyChange(this, 'formReportTemplates');\n    }\n\n    @action\n    async openGpsMap(selected) {\n        if (this.showLocationMap) {\n            set(this, 'showLocationMap', false);\n            set(this, 'locationMarkers', []);\n            set(this, 'startEndMarkers', []);\n            return;\n        }\n        return this.setMapMarkers(selected);\n    }\n\n    @action\n    columnsChanged(columns) {\n        set(this, 'columns', columns);\n\n        // ugly hax to force ember-table rerender without loading data again\n        const cacheData = get(this, 'data');\n        set(this, 'data', null);\n        next(this, () => set(this, 'data', cacheData));\n    }\n\n    @action\n    filterChange(value, field) {\n        if (field) {\n            set(this, 'currentPage', 1);\n            set(this, 'filterByValues.' + field, value && value.id ? value.id : value);\n            if (field === 'groupBy') this.handleGroupBy(value);\n            notifyPropertyChange(this, 'queryParams');\n            this.updateReport();\n        }\n    }\n\n    @action\n    fieldChanged(field, value) {\n        this.showForm[field] = value;\n    }\n\n    @action\n    clearFilters() {\n        set(this, 'currentPage', 1);\n        this.setVisibleColumns();\n        set(this, 'sumReport', false);\n        set(this, 'filterByValues', this.args.filter ? this.args.filter : {});\n        notifyPropertyChange(this, 'queryParams');\n        this.updateReport();\n    }\n\n    @action\n    filterChangeAction(value, field) {\n        if (this.args.filterChangeAction) this.args.filterChangeAction(value, field);\n    }\n\n    @action\n    async actionClicked(act, row) {\n        this.analytics.trackEvent({\n            category: this.form + ' report row actions',\n            action: act,\n            label: 'tt4-addon-report',\n        });\n        set(this, 'needsUpdate', true);\n        if (act == 'edit') set(this, 'showForm', row);\n        if (act === 'history') set(this, 'showHistory', row);\n        if (act == 'remove') this.removeRow(row);\n        if (act === 'restore') this.restoreRow(row);\n        if (act === 'copy') this.copyRow(row);\n        if (act === 'unlock') {\n            if (!get(row, 'row_info.privilege_openlock')) {\n                return this.notifications.warning(this.intl.t('general.unlock.error'), {\n                    autoClear: true,\n                });\n            }\n            this.lockOrUnlock(row, 'unlock');\n        }\n        if (act === 'overview') {\n            if (!this.fields) this.fields = this.forms.fieldArray(this.form);\n            this.showOverview = row;\n        }\n    }\n\n    @action\n    add() {\n        const values = Object.assign({}, get(this, 'filter'));\n        set(this, 'showForm', this.store.createRecord(this.form, values));\n    }\n\n    @action\n    reload() {\n        this.updateReport();\n    }\n\n    @action\n    pageChange(page) {\n        set(this, 'currentPage', page);\n        this.updateReport();\n    }\n\n    @action\n    async exportPdf(selected, params = {}) {\n        set(this, 'showLoader', true);\n        this.analytics.trackEvent({\n            category: this.form + ' report actions',\n            action: 'Pdf export',\n            label: 'tt4-addon-report',\n        });\n        try {\n            if (params.layoutOption === 'sideHeaders') {\n                await this.fileExports.createPdfFull(\n                    this.form,\n                    this.selectedExportRows,\n                    this.filterByValues,\n                    this.columns.mapBy('external_type').join(','),\n                    params,\n                    null,\n                );\n            } else {\n                await this.createPdf(selected, params, 'download');\n            }\n        } catch (error) {\n            this.error.notify(error);\n        } finally {\n            set(this, 'showLoader', false);\n        }\n    }\n\n    @action\n    async exportPdfFull(params) {\n        set(this, 'showLoader', true);\n        this.analytics.trackEvent({\n            category: this.form + ' report actions',\n            action: 'Pdf big pictures export',\n            label: 'tt4-addon-report',\n        });\n        try {\n            if (isEmpty(this.queryParams['groupBy'])) delete this.queryParams['groupBy'];\n            await this.fileExports.createPdfFull(\n                this.form,\n                this.selectedExportRows,\n                this.queryParams,\n                this.columns.mapBy('external_type').join(','),\n                params,\n                null,\n            );\n        } catch (error) {\n            this.error.notify(error);\n        } finally {\n            set(this, 'showLoader', false);\n        }\n    }\n\n    @action\n    async exportCsv(selected) {\n        set(this, 'showLoader', true);\n        this.analytics.trackEvent({\n            category: this.form + ' report actions',\n            action: 'Csv export',\n            label: 'tt4-addon-report',\n        });\n        try {\n            const data = !isEmpty(selected) ? selected : await this.getExportData();\n            const columns = this.columns.map((col) => {\n                return { name: col.translated_name, ext: col.name, obj: col };\n            });\n            await this.fileExports.createCsv(this.form, data, columns);\n        } catch (error) {\n            this.error.notify(error);\n        } finally {\n            set(this, 'showLoader', false);\n        }\n    }\n\n    @action\n    async exportExcel(params, base64 = false, includeAllPages = false) {\n        set(this, 'showLoader', true);\n        this.analytics.trackEvent({\n            category: this.form + ' report actions',\n            action: 'Excel export',\n            label: 'tt4-addon-report',\n        });\n        try {\n            let filters = this.addFiltersToPdf();\n            let data =\n                !isEmpty(this.selectedExportRows) && !includeAllPages\n                    ? this.selectedExportRows\n                    : await this.getExportData();\n            let columns = this.columns.map((col) => {\n                return { name: col.translated_name, ext: col.name, obj: col };\n            });\n            const sumRow = params.addSumRow ? this.getExcelSumRow(data) : false;\n            let excelJSON = this.fileExports.createExcelJSONFromForm(\n                this.form,\n                data,\n                columns,\n                filters,\n                sumRow,\n            );\n            if (base64) return await this.fileExports.createBase64ExcelFromJSON(excelJSON);\n            await this.fileExports.createExcelFromJSON(excelJSON);\n        } catch (error) {\n            this.error.notify(error);\n        } finally {\n            set(this, 'showLoader', false);\n        }\n    }\n\n    @action\n    handleExportActions(params) {\n        switch (params.type) {\n            case 'export_pdf':\n                this.exportPdf(this.selectedExportRows, params);\n                break;\n            case 'export_pdf_full':\n                this.exportPdfFull(params);\n                break;\n            case 'export_excel':\n                this.exportExcel(params);\n                break;\n        }\n        set(this, 'showExportModal', false);\n    }\n\n    @action\n    saveRows() {\n        this.saveDirtyRecords();\n    }\n\n    @action\n    async toggleInlineEdit() {\n        const reportElement = document.querySelector('.ember-movenium-table');\n        if (get(this, 'inlineEdit')) {\n            this.analytics.trackEvent({\n                category: this.form + ' report inline edit',\n                action: 'disable',\n                label: 'tt4-addon-report',\n            });\n            //if we are closing inline edit, check for dirty/new/invalid records and prompt user if closing is okay\n            let dirtyRecords = [];\n            let reloadPromises = [];\n\n            await this.data.forEach((record) => {\n                if (\n                    get(record, 'hasDirtyAttributes') ||\n                    get(record, 'isNew') ||\n                    !get(record, 'isValid')\n                ) {\n                    dirtyRecords.push(record);\n                }\n            });\n\n            //if we have dirty records we want to rollback to their previous state\n            if (!isEmpty(dirtyRecords)) {\n                let confirm = await this.dialogs.confirm(this.intl.t('report.confirm_unsaved'));\n\n                if (!confirm) return;\n\n                dirtyRecords.forEach((record) => {\n                    record.rollbackAttributes();\n                    if (!get(record, 'isDeleted')) reloadPromises.push(record.reload());\n                });\n            }\n\n            await Promise.all(reloadPromises);\n\n            //filter out removed records from data\n            let newData = await get(this, 'data').filter((record) => {\n                if (get(record, 'isDeleted')) {\n                    this.cachedRowCount--;\n                    return false;\n                } else return true;\n            });\n\n            set(this, 'data', newData);\n\n            set(this, 'inlineEdit', false);\n            // remove class from report table to disable inline edit styles\n            if (reportElement) {\n                reportElement.classList.remove('ember-movenium-table-inline-edit');\n            }\n        } else {\n            let showInlineEdit = true;\n            // if we are opening inline edit, first check that there are no more than 25 rows on the report and if there are, show a confirm dialog\n            // this is because inline edit might be buggy or slow if there are too many rows on the report\n            if (this.rowsPerPage !== 25) {\n                showInlineEdit = await this.dialogs.confirm(\n                    this.intl.t('report.confirm_inline_edit'),\n                );\n            }\n            if (showInlineEdit) {\n                this.analytics.trackEvent({\n                    category: this.form + ' report inline edit',\n                    action: 'enable',\n                    label: 'tt4-addon-report',\n                });\n                this.selectedRows = [];\n                if (this.metaRowCount && !this.cachedRowCount)\n                    set(this, 'cachedRowCount', this.metaRowCount);\n                set(this, 'inlineEdit', true);\n                // add class to report table to enable inline edit styles\n                // this opens the report in full without table scroll bars\n                // this is needed to make the editing of rows work properly in edit mode\n                if (reportElement) {\n                    reportElement.classList.add('ember-movenium-table-inline-edit');\n                }\n            }\n        }\n    }\n\n    @action\n    async changeStatus(selected, status) {\n        if (isEmpty(selected)) return;\n        this.analytics.trackEvent({\n            category: this.form + ' report more actions',\n            action: 'Change status',\n            label: 'tt4-addon-report',\n        });\n        if (this.metaRowCount > selected.length && selected.length === this.data.length) {\n            this.setParamsForStatusChangeAllPages(selected, status, null);\n        }\n        this.setDatesForFastExporter('clear');\n        let closedToApprovedRows = [];\n        for (let row of selected) {\n            this.setDatesForFastExporter(row.date);\n            if (row.status === 'closed' && status === 'approved') {\n                closedToApprovedRows.push(row);\n                continue;\n            }\n            set(row, 'status', status);\n            try {\n                await row.save();\n                row.reload();\n            } catch (error) {\n                this.error.notify(error);\n                row.rollbackAttributes();\n            }\n        }\n        await this.handleClosedToApprovedRows(closedToApprovedRows);\n        this.statusChanged(status);\n    }\n\n    @action\n    openExportModal(selected, type) {\n        set(this, 'showExportModal', true);\n        set(this, 'emailError', false);\n        set(this, 'exportInitType', type);\n        set(this, 'selectedExportRows', selected);\n        set(this, 'showApprovalLinkSelection', this.showApprovalLink);\n    }\n\n    @action\n    handleLock(selected, act) {\n        if (isEmpty(selected)) return;\n        if (!this.Collector.testNeeds(['userlevel=5'])) return;\n\n        this.analytics.trackEvent({\n            category: this.form + ' report more actions',\n            action: act + ' rows',\n            label: 'tt4-addon-report',\n        });\n\n        if (this.metaRowCount > selected.length && selected.length === this.data.length) {\n            this.setParamsForStatusChangeAllPages(selected, null, act);\n        }\n\n        selected.forEach((row) => {\n            this.lockOrUnlock(row, act);\n        });\n    }\n\n    @action\n    closeShowChangeStatusForAllPages() {\n        set(this, 'showChangeStatusForAllPages', false);\n    }\n\n    @action\n    showOrHideRemoved() {\n        if (this.showRemoved) {\n            set(this, 'showRemoved', false);\n        } else {\n            set(this, 'showRemoved', true);\n        }\n        this.updateReport();\n    }\n\n    @action\n    async handleRemove(selected, act) {\n        if (isEmpty(selected)) return;\n        if (act === 'remove') {\n            let con = await this.dialogs.confirm(this.intl.t('report.confirm_delete'));\n            if (con) {\n                for (let row of selected) {\n                    await row.destroyRecord();\n                    await row.unloadRecord();\n                }\n                this.updateReport();\n            }\n        } else {\n            let con = await this.dialogs.confirm(this.intl.t('report.confirm_restore_rows'));\n            if (con) {\n                let form_plural = pluralize(this.form).camelize();\n                let body = {};\n                body[this.form.camelize()] = { 'row_info.status': 'normal' };\n                for (let row of selected) {\n                    await this.apiservice.request(\n                        'capi',\n                        '/' + form_plural + '/' + row.id + '?validation=off',\n                        'PUT',\n                        body,\n                    );\n                    await row.unloadRecord();\n                }\n                this.updateReport();\n            }\n        }\n    }\n\n    @action\n    async sendEmail(to, title, content, params) {\n        set(this, 'showLoader', true);\n        let emailData = this.allPagesSelected ? this.getExportData() : this.selectedExportRows;\n        let base64string = await this.getPdfAttachmentForEmail(params, emailData);\n        let rowids = emailData ? emailData.map((item) => get(item, 'id')) : [];\n        const body = {\n            to_address: to,\n            email: base64string,\n            content: content,\n            lang: this.intl.primaryLocale,\n            includeApproval: get(params, 'approvalLink'),\n            form_name: this.form,\n            rowids: rowids,\n            header: title,\n            type: get(params, 'type'),\n            dontAttachImages: get(params, 'imgLocation') === 'hideImages', // this param prevents attaching images to email, if customer doesn't want images at all\n        };\n        let res = await this.apiservice.request('ttapi', '/sendReportAsEmail', 'POST', body);\n        res.ok ? set(this, 'emailSent', true) : set(this, 'emailError', true);\n\n        if (params.approvalLink && res.ok) this.addHistoryForSentRows(to, this.form, rowids);\n\n        set(this, 'showLoader', false);\n    }\n\n    @action\n    setRowsPerPage(RowsPerPage) {\n        this.analytics.trackEvent({\n            category: this.form + ' report rows per page',\n            action: RowsPerPage,\n            label: 'tt4-addon-report',\n        });\n        set(this, 'currentPage', 1);\n        set(this, 'rowsPerPage', RowsPerPage);\n        this.localStorageWrapper.setUserSetting(this.defaultLimitKey, RowsPerPage);\n        this.updateReport();\n    }\n\n    @action\n    updateSorts(sorts) {\n        if (get(sorts, 'firstObject'))\n            this.analytics.trackEvent({\n                category: this.form + ' report sort by column',\n                action: get(sorts, 'firstObject').valuePath,\n                label: 'tt4-addon-report',\n            });\n        this.sorts = sorts;\n        this.localStorageWrapper.setUserSetting(this.defaultSortKey, sorts);\n        this.reload();\n    }\n\n    @action\n    async mergeTemplates() {\n        await this.apiservice.request(\n            'ttapi',\n            `/mergeTemplates?form=${this.form}&filters=${this.showFilters}`,\n            'POST',\n        );\n        this.fetchTemplates();\n    }\n\n    @action\n    closeEditModal() {\n        this.showForm.rollbackAttributes();\n        this.showForm = null;\n    }\n\n    @action\n    saveResize(item) {\n        // do not save column size if old template activated\n        if (this.oldTemplateFromLS) return;\n\n        //save column size to template if some template is active\n        if (this.currentFormTemplate) return this.saveColumnSizeForTemplate(item);\n\n        //if size object exists update it else create new one\n        const existingSizeObject = this.columnSizes.findBy('valuePath', item.valuePath);\n        if (existingSizeObject) set(existingSizeObject, 'width', item.width);\n        else this.columnSizes.pushObject({ valuePath: item.valuePath, width: item.width });\n\n        this.localstorage.setItem(this.localStorageKey + '_columnSizes', this.columnSizes);\n    }\n\n    @action\n    setSelectedRows(rows) {\n        set(this, 'selectedRows', rows);\n        if (this.showLocationMap) this.setMapMarkers(rows);\n    }\n\n    async handleClosedToApprovedRows(rows) {\n        if (isEmpty(rows)) return;\n        // There's no way around it since it's impossible to click dialog box in component test\n        let con = Ember.testing\n            ? true\n            : await this.dialogs.confirm(\n                  this.intl.t('report.confirm_closed_to_approved', { count: rows.length }),\n              );\n        if (!con) return;\n\n        for (let row of rows) {\n            set(row, 'status', 'approved');\n            try {\n                await row.save();\n                row.reload();\n            } catch (error) {\n                this.error.notify(error);\n                row.rollbackAttributes();\n            }\n        }\n    }\n\n    saveColumnSizeForTemplate(item) {\n        let template = this.store.peekRecord('form-report-template', this.currentFormTemplate);\n\n        let newColumns = JSON.parse(template.columns);\n        newColumns.findBy('valuePath', item.valuePath).width = item.width;\n\n        set(template, 'columns', JSON.stringify(newColumns));\n        template.save();\n\n        this.localstorage.setItem(this.localStorageKey + '_selectedTemplate', {\n            data: template,\n            current: template.id,\n        });\n    }\n\n    handleGroupBy(value) {\n        set(this, 'filterByValues.order', this.getOrder(value));\n        if (value) {\n            set(this, 'sumReport', true);\n            const selectedFields = value\n                .split(',')\n                .map((val) => this.allColumns.find((col) => col.name === val));\n            set(\n                this,\n                'columns',\n                selectedFields.concat(\n                    this.columns.filter(\n                        (col) =>\n                            this.groupableColumns.includes(col.type) &&\n                            !value.split(',').includes(col.name),\n                    ),\n                ),\n            );\n        } else {\n            this.setVisibleColumns();\n            set(this, 'sumReport', false);\n        }\n    }\n\n    getOrder(value) {\n        if (value) return value;\n        if (this.args.filter && this.args.filter['order']) return this.args.filter['order'];\n        return null;\n    }\n\n    checkCustomQueryParams(params) {\n        if (!this.custParams) return params;\n\n        const split = this.custParams.includes(':')\n            ? this.custParams.split(':')\n            : this.custParams.split('_');\n\n        if (isPresent(params[split[0]])) {\n            params[this.custParams] = params[split[0]];\n            delete params[split[0]];\n        }\n        return params;\n    }\n\n    getExcelSumRow(data) {\n        const sumData = getSums(data, this.columns, this.form, this.Collector, this.forms, true);\n        const sumValues = sumData[0] ? Object.values(sumData[0]) : [];\n        sumValues.unshift(''); // need to add empty row first like general-report does, so sums match to correct columns in ttapi2\n        return sumValues.map((row) => (isHTMLSafe(row) ? row.string : row));\n    }\n\n    fetchTemplates() {\n        this.formReportTemplates = this.store.query('form-report-template', {\n            'filter[attributes.form]': this.form,\n        });\n    }\n\n    async setTemplateValues(template) {\n        const currentLsTemplate = this.localstorage.getItem(\n            this.localStorageKey + '_selectedTemplate',\n        )\n            ? this.localstorage.getItem(this.localStorageKey + '_selectedTemplate').current\n            : null;\n        set(this, 'currentFormTemplate', currentLsTemplate ? currentLsTemplate : null);\n        set(this, 'filterByValues', {});\n        if (template.filters) {\n            const dateRangeOptions = [\n                'this_week',\n                'last_week',\n                'this_month',\n                'last_month',\n                'this_year',\n                'last_year',\n                'this_salaryperiod',\n            ];\n            const parsedFilters = JSON.parse(template.filters);\n            if (!this.currentSalaryPeriod) await this.setCurrentPeriod();\n            Object.entries(parsedFilters).forEach((filter) => {\n                const filterValue = dateRangeOptions.includes(filter[1])\n                    ? this.returnDateValue(filter[1])\n                    : filter[1];\n\n                if (filter[0].includes('.')) {\n                    const splitted = filter[0].split('.');\n                    let fIndex = splitted.length > 2 ? 1 : 0;\n                    this.filterByValues[splitted[fIndex] + '[' + splitted[fIndex + 1] + ']'] =\n                        filterValue;\n                } else {\n                    this.filterByValues[filter[0]] = filterValue;\n                }\n            });\n            const additionalFilters = Object.keys(parsedFilters).filter((p) => p.includes('.'));\n            const normalFilters = Object.keys(parsedFilters).filter((p) => !p.includes('.'));\n\n            set(this, 'filterOrder', template.filterOrder);\n            set(this, 'showFilters', normalFilters.join(',') + ',q,groupBy');\n            set(this, 'additionalFilters', additionalFilters.join(','));\n        }\n        if (template.limit) set(this, 'rowsPerPage', template.limit);\n        if (template.sums) {\n            const sumFields = JSON.parse(template.sums)\n                .map((sum) => sum.name)\n                .join(',');\n            this.filterByValues['groupBy'] = sumFields;\n            this.filterByValues['order'] = sumFields;\n        }\n        set(this, 'showOnlySum', template.sumType === 'onlysum');\n        set(this, 'sumReport', template.sumType === 'sumby');\n        notifyPropertyChange(this, 'queryParams');\n    }\n\n    returnDateValue(value) {\n        switch (value) {\n            case 'this_week':\n                return (\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('isoWeek').format('YYYY-MM-DD')\n                );\n            case 'last_week':\n                return (\n                    moment().subtract(1, 'week').startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'week').endOf('isoWeek').format('YYYY-MM-DD')\n                );\n            case 'this_month':\n                return (\n                    moment().startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('month').format('YYYY-MM-DD')\n                );\n            case 'last_month':\n                return (\n                    moment().subtract(1, 'month').startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'month').endOf('month').format('YYYY-MM-DD')\n                );\n            case 'this_year':\n                return (\n                    moment().startOf('year').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('year').format('YYYY-MM-DD')\n                );\n            case 'last_year':\n                return (\n                    moment().subtract(1, 'year').startOf('year').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'year').endOf('year').format('YYYY-MM-DD')\n                );\n            case 'this_salaryperiod':\n                return this.currentSalaryPeriod;\n            default:\n                return (\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('isoWeek').format('YYYY-MM-DD')\n                );\n        }\n    }\n\n    async setCurrentPeriod() {\n        let salaryPeriods = this.store.peekAll('wage-period');\n        if (isEmpty(salaryPeriods)) salaryPeriods = await this.store.findAll('wage-period');\n        if (isEmpty(salaryPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n\n        const currentDate = moment().format('YYYY-MM-DD');\n        const currentPeriods = salaryPeriods.filter((period) => {\n            return period.period_start_date <= currentDate && period.period_end_date >= currentDate;\n        });\n        if (isEmpty(currentPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n        // Just set first that is found\n        this.currentSalaryPeriod =\n            currentPeriods[0].period_start_date + '_' + currentPeriods[0].period_end_date;\n    }\n\n    async getProjectInfo(project) {\n        let projects = await this.store.query('project', { id: project.id });\n        return get(projects, 'firstObject');\n    }\n\n    getLocationMapInfo(row) {\n        if (row.location_map) {\n            return row.location_map;\n        } else if (row.project) {\n            return this.getProjectInfo(row.project);\n        } else {\n            return null;\n        }\n    }\n\n    setParamsForStatusChangeAllPages(selected, status = null, action = null) {\n        let visibleRowIds = selected.map((row) => get(row, 'id'));\n        const queryParams = this.queryParams;\n        queryParams['limit'] = 'all';\n        queryParams['sideload'] = true;\n\n        setProperties(this.changeStatusForAllPagesParams, {\n            visibleRowIds: visibleRowIds,\n            requestParams: queryParams,\n            form: this.form,\n            status: status,\n            action: action,\n            rowCount: this.metaRowCount,\n        });\n        set(this, 'showChangeStatusForAllPages', true);\n    }\n\n    statusChanged(toStatus) {\n        if (\n            toStatus === 'approved' &&\n            this.Collector.testNeeds(['products.vismanet||products.severa']) &&\n            this.form === 'worktime'\n        ) {\n            this.showFastExporter = true;\n        }\n\n        let surveyTheseForms = ['worktime', 'abcense'];\n        if (toStatus === 'approved' && surveyTheseForms.includes(this.form))\n            this.surveys.initializeAndRun('row_approved'); // show wootric CES-survey after row approved\n    }\n\n    setDatesForFastExporter(date) {\n        if (date === 'clear') {\n            return (this.datesForFastExporter = { from: null, to: null });\n        }\n\n        if (\n            !this.datesForFastExporter.from ||\n            moment(date).isBefore(this.datesForFastExporter.from)\n        ) {\n            this.datesForFastExporter['from'] = date;\n        }\n\n        if (!this.datesForFastExporter.to || moment(date).isAfter(this.datesForFastExporter.to)) {\n            this.datesForFastExporter['to'] = date;\n        }\n    }\n\n    async createPdf(selected, params, mode = 'download', includeAllPages = false) {\n        const columnsOnReport = this.columns.map((col) => col.external_type).join(',');\n        let showColumns = params.template\n            ? get(params, 'template.columns')\n            : columnsOnReport\n            ? columnsOnReport\n            : null;\n        let settings = { form: this.form, show_columns: showColumns };\n        let data = selected.length && !includeAllPages ? this.data : this.getExportData();\n        let element = await this.fileExports.createPdfElement(\n            data,\n            selected,\n            settings,\n            this.columns,\n            params,\n            includeAllPages,\n        );\n        let elements = [element];\n        let filters_body = this.addFiltersToPdf();\n        if (filters_body.length > 0) {\n            elements.unshift({\n                table: { body: filters_body },\n                layout: 'noBorders',\n            });\n        }\n        let file = await createPdfFromElements(this, elements, mode, '', 8, params);\n\n        if (window.cordova) {\n            this.cordova.openFile(file, 'application/pdf');\n        }\n        return file;\n    }\n\n    addFiltersToPdf() {\n        let filterKeys = Object.keys(this.filterByValues);\n        if (!filterKeys) return [];\n        let pdf_filters_body = filterKeys.map((key) => {\n            let filterValues = this.filterByValues[key];\n            if (!filterValues || !this.forms.fieldExists(this.form, key)) return;\n            let field = this.forms.field(this.form, key);\n\n            let filterNameInPdf = this.setFilterNameInPdf(key);\n            let filterValueInPdf = '';\n\n            if (filterValues.includes(',')) {\n                filterValues.split(',').forEach((value) => {\n                    filterValueInPdf +=\n                        this.Collector._format_(\n                            field.type === 'database' ? parseInt(value) : value,\n                            this.form,\n                            key,\n                            'pdf',\n                            this.data,\n                        ) + ', ';\n                });\n                filterValueInPdf = filterValueInPdf.slice(0, -2);\n            } else {\n                filterValues = field.type === 'database' ? parseInt(filterValues) : filterValues;\n                if (key.includes(':')) {\n                    filterValueInPdf += this.Collector._format_(\n                        filterValues,\n                        this.form,\n                        key.split(':')[0],\n                        'pdf',\n                        this.data,\n                    );\n                } else {\n                    filterValueInPdf += this.Collector._format_(\n                        filterValues,\n                        this.form,\n                        key,\n                        'pdf',\n                        this.data,\n                    );\n                }\n            }\n            return [filterNameInPdf + ': ' + filterValueInPdf];\n        });\n\n        return pdf_filters_body.filter((item) => item);\n    }\n\n    setFilterNameInPdf(key) {\n        let field = this.forms.fieldArray(this.form).findBy('name', key);\n\n        if (this.intl.exists(this.form + '.' + key)) {\n            return this.intl.t(this.form + '.' + key);\n        } else if (field && field.translated_name) {\n            return field.translated_name;\n        } else if (key.includes(':')) {\n            return (\n                this.intl.t(this.form + '.' + key.split(':')[0]) +\n                ' - ' +\n                this.intl.t(this.form + '.' + key.split(':')[1])\n            );\n        } else {\n            return key;\n        }\n    }\n\n    async getPdfAttachmentForEmail(params, data) {\n        switch (params.type) {\n            case 'export_pdf':\n                return await this.createPdf(\n                    this.selectedExportRows,\n                    params,\n                    'base64',\n                    this.allPagesSelected,\n                );\n            case 'export_pdf_full':\n                if (isEmpty(this.queryParams['groupBy'])) delete this.queryParams['groupBy'];\n                return await this.fileExports.createPdfFull(\n                    this.form,\n                    data,\n                    this.queryParams,\n                    this.args.showColumns,\n                    params,\n                    'base64',\n                );\n            case 'export_excel':\n                return await this.exportExcel(params, true, this.allPagesSelected);\n        }\n    }\n\n    setJsonapiParams(params) {\n        if (!params) return {};\n        let filters = {};\n        Object.entries(params).forEach((param) => {\n            if (!param[1]) return; //if value is empty, continue\n            if (param[0] === 'projectId') {\n                filters['projectId'] = param[1];\n                return;\n            }\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        // Skip if already deleted — destroyRecord in the same session\n        // leaves the record in root.deleted.saved, where unloadRecord()\n        // throws.\n        if (!row.isDeleted && !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                                myValues.forEach(function (v) {\n                                    if (otherVal.indexOf(String(v)) !== -1 && duplicates.indexOf(String(v)) === -1) {\n                                        duplicates.push(String(v));\n                                    }\n                                });\n                            });\n                            self.set('duplicateValues', duplicates);\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                text: 'report.projects.retention',\n                link: 'projects.retention',\n                needs: ['userlevel=5'],\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                text: 'settings.retention_log',\n                link: 'settings.retention-log',\n                needs: ['userlevel=5'],\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    var value = params[0];\n    var duplicateValues = params[1];\n    if (!duplicateValues || !Array.isArray(duplicateValues) || !value) return false;\n    return duplicateValues.indexOf(String(value)) !== -1;\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.isDeleted && !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\":\"4PaYGOWX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"report-main-zoomed\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.aggregated.rows.worktimes\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\",\\\"fullscreenmode\\\",\\\"bubbleSetRowsPerPage\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\",\\\"worktimeRows\\\"]],[24,[\\\"worktime_page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]],\\\"custom\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"setRowsPerPage\\\"]],\\\"worktime\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.aggregated.rows.absences\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\",\\\"fullscreenmode\\\",\\\"bubbleSetRowsPerPage\\\"],[\\\"bubbleTransition\\\",\\\"abcense\\\",[24,[\\\"model\\\",\\\"absenceRows\\\"]],[24,[\\\"absence_page\\\"]],[24,[\\\"absence_settings\\\"]],[24,[\\\"status\\\"]],\\\"custom\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"setRowsPerPage\\\"]],\\\"absence\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/aggre-gated/rows/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"1JItrjTA\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\",\\\"abSum\\\",\\\"wSum\\\",\\\"type\\\",\\\"field\\\",\\\"absence\\\",\\\"wsum\\\",\\\"v\\\",\\\"k\\\",\\\"filter\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column aggregated-report\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-20 padding-small\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"aggregated-filters\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"aggregated-filter\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"date\\\",[23,12,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"value\\\",\\\"wagePeriods\\\",\\\"dateChange\\\"],[[23,12,[\\\"value\\\"]],true,\\\"sendFilterChange\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,12,[]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[\\\"sendFilterChange\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[12]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column worktime-highlight sum-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.aggregated.worktime_sums\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"worktimeSums\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"worktime-sub-header user\\\"],[8],[1,[23,9,[\\\"user\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,9,[]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,11,[]],[24,[\\\"skipSumFields\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[\\\"worktime.\\\",[23,11,[]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 sum-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"worktime\\\",[23,11,[]]]]],false],[9],[0,\\\":\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 sum-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",[23,11,[]],[23,10,[]]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[10,11]},null]],\\\"parameters\\\":[9]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column absence-highlight sum-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.aggregated.absence_sums\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"absenceTypes\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"absence-sub-header\\\"],[8],[1,[23,6,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"summableAbsenceFields\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"absencesByType\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"typeId\\\"]],[23,6,[\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 absence-sum-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"abcense\\\",[23,7,[\\\"name\\\"]]]]],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 absence-sum-item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,7,[\\\"name\\\"]],\\\"dayamount\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",[23,7,[\\\"name\\\"]],[23,8,[\\\"daySum\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,7,[\\\"name\\\"]],\\\"absence_hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",[23,7,[\\\"name\\\"]],[28,\\\"sum-field\\\",null,[[\\\"field\\\",\\\"rows\\\"],[[28,\\\"hash\\\",null,[[\\\"type\\\",\\\"name\\\"],[\\\"hours\\\",\\\"hours\\\"]]],[23,8,[\\\"rows\\\"]]]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",[23,7,[\\\"name\\\"]],[28,\\\"sum-field\\\",null,[[\\\"field\\\",\\\"rows\\\"],[[23,7,[]],[23,8,[\\\"rows\\\"]]]]]]]],false],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[8]},null]],\\\"parameters\\\":[7]},null]],\\\"parameters\\\":[6]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-80 padding-small\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link no-print\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"print\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.print\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link no-print\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"printAll\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.print_all\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right rows-toggle\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"onToggle\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"showAllRows\\\"]],\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"toggleAllRows\\\"]]],null],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"timetracker.aggregated.show_rows\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showWarning\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.too_many_rows\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"calendar-report\\\",null,[[\\\"hideDateRangePicker\\\",\\\"date\\\",\\\"user\\\",\\\"hideWeekend\\\",\\\"classNames\\\"],[true,[24,[\\\"date\\\"]],[24,[\\\"user\\\"]],[24,[\\\"hideWeekend\\\"]],\\\"no-bottom-padding\\\"]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\",\\\"specialDay\\\"],[[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-report-add-options\\\",null,[[\\\"options\\\",\\\"date\\\",\\\"add\\\"],[[24,[\\\"addOptions\\\"]],[23,1,[]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"addNew\\\"]],[23,1,[]]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",false],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"timetracker.aggregated.show_rows_date\\\"],null]],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showRows\\\"]],[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"calendar-card-sum\\\",null,[[\\\"model\\\",\\\"date\\\",\\\"fields\\\",\\\"classNames\\\"],[[24,[\\\"dailyWorktimeSums\\\"]],[23,1,[]],[28,\\\"hash\\\",null,[[\\\"hours\\\",\\\"date\\\"],[\\\"work_hours\\\",\\\"date\\\"]]],\\\"calendar-card worktime-calendar-card\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,5,[]],null],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h2\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,5,[]],\\\"0:00h\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[4,\\\"calendar-card-sum\\\",null,[[\\\"model\\\",\\\"date\\\",\\\"fields\\\",\\\"classNames\\\",\\\"title\\\"],[[24,[\\\"absences\\\"]],[23,1,[]],[28,\\\"hash\\\",null,[[\\\"hours\\\",\\\"date\\\"],[\\\"hours\\\",\\\"date\\\"]]],\\\"calendar-card absence-calendar-card\\\",[28,\\\"t\\\",[\\\"timetracker.aggregated.show_rows_date\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,4,[]],null],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h2\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cup\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,4,[]],\\\"0:00h\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100 padding-small\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/aggre-gated/template.hbs\"}});","import { Promise as EmberPromise } from 'rsvp';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { computed, set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Component from '@ember/component';\n\nexport default Component.extend({\n    ttapi: service(),\n    Collector: service('collector-service'),\n    intl: service(),\n    notifications: service(),\n    sendto: '',\n    days: '',\n    nameField: '',\n    projectField: '',\n    error_negative: false,\n    showCustomField: false,\n\n    showNameField: computed(function () {\n        return get(this, 'form') == 'user' || get(this, 'form') == 'card' ? false : true;\n    }),\n\n    formFields: computed(function () {\n        return get(this, 'Collector').fieldArray(get(this, 'form'));\n    }),\n\n    sendto_options: computed(function () {\n        const intl = get(this, 'intl');\n        let roles = [\n            { id: '3', translated_name: intl.t('user.userlevel.3'), name: 'userlevel=3' },\n            { id: '6', translated_name: intl.t('user.userlevel.6'), name: 'userlevel=6' },\n            { id: '5', translated_name: intl.t('user.userlevel.5'), name: 'userlevel=5' },\n        ];\n\n        if (get(this, 'Collector').testNeeds(['products.project_owner'])) {\n            roles = this._getProjectOwnerRole(roles);\n        }\n        return roles;\n    }),\n    alarmValue: computed(function () {\n        const key = 'expires@' + get(this, 'form') + '.' + get(this, 'field');\n\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            promise: new EmberPromise((resolve) => {\n                get(this, 'ttapi')\n                    ._get('alarm', { key: key })\n                    .then((back) => this._setAlarms(back, resolve));\n            }),\n        });\n    }),\n\n    showSaveButton: computed('nameField', 'days', 'sendto', function () {\n        let name = get(get(this, 'alarmValue'), 'name');\n        let days = get(get(this, 'alarmValue'), 'before');\n        let sendto = get(get(this, 'alarmValue'), 'sendto');\n\n        if (this.error_negative || !get(this, 'days')) return false;\n\n        if (\n            name != get(this, 'nameField') ||\n            days != get(this, 'days') ||\n            sendto != get(this, 'sendto')\n        ) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n\n    init() {\n        this._super(...arguments);\n        this.alarmOptions = ['0', '5', '7', '10', '14', '21', '28'];\n    },\n\n    async didReceiveAttrs() {\n        let alarm = await get(this, 'alarmValue');\n        if (alarm) set(this, 'showCustomField', !this.alarmOptions.includes(alarm.before));\n    },\n\n    actions: {\n        saveAlarm: function () {\n            const key = 'expires@' + get(this, 'form') + '.' + get(this, 'field');\n            const fieldTranslation = get(this, 'Collector').getTranslationForColumn(\n                get(this, 'form'),\n                get(this, 'field'),\n            );\n            const days = get(this, 'days');\n\n            get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                autoClear: true,\n            });\n\n            if (!isNaN(days)) {\n                get(this, 'ttapi')._post('alarms', {\n                    type: 'expires',\n                    extra: {\n                        form: get(this, 'form'),\n                        field: get(this, 'field'),\n                        before: days,\n                        fieldTranslation: fieldTranslation.string\n                            ? fieldTranslation.string\n                            : fieldTranslation,\n                        locale: moment.locale(),\n                        send_to: get(this, 'sendto'),\n                        nameField: get(this, 'nameField'),\n                        projectField: get(this, 'projectField'),\n                    },\n                    key: key,\n                });\n            } else {\n                get(this, 'ttapi')._delete('alarms/' + key);\n            }\n        },\n\n        setDays(value) {\n            set(this, 'error_negative', false);\n\n            if (value === 'custom') {\n                set(this, 'showCustomField', true);\n            } else {\n                set(this, 'days', value);\n                set(this, 'showCustomField', false);\n            }\n        },\n\n        validateAndSetCustomDays(days) {\n            if (days < 0) {\n                set(this, 'error_negative', true);\n                return;\n            }\n            set(this, 'error_negative', false);\n            set(this, 'days', days);\n        },\n    },\n\n    _setAlarms(back, resolve) {\n        if (back.length > 0) {\n            let sendTo = JSON.parse(get(back, 'firstObject.extra')).send_to;\n            if (sendTo) {\n                set(this, 'sendto', sendTo);\n            }\n            let nameField = JSON.parse(get(back, 'firstObject.extra')).nameField;\n            if (nameField) {\n                set(this, 'nameField', nameField);\n            }\n            let before = JSON.parse(get(back, 'firstObject.extra')).before;\n            if (before) {\n                set(this, 'days', before);\n            }\n            resolve({ before: before, name: nameField, sendto: sendTo });\n        } else {\n            resolve();\n        }\n    },\n    _getProjectOwnerRole(roles) {\n        const intl = get(this, 'intl');\n        let projectFieldName = '';\n        get(this, 'formFields').forEach(function (field) {\n            if (field.type == 'database' && field.options.form == 'project') {\n                projectFieldName = field.name;\n                roles.push({\n                    translated_name: intl.t('alarm.project_owner'),\n                    name: 'project_owner',\n                });\n            }\n        });\n        set(this, 'projectField', projectFieldName);\n        return roles;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"hKqbHEQ8\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"field\\\",\\\"&default\\\"],\\\"statements\\\":[[14,3],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"alarmValue\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.turn_on_expires\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"days\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setDays\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.not_in_use\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"0\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"0\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.0_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"5\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"5\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.5_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"7\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"7\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.7_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"10\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"10\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.10_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"14\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"14\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.14_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"21\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"21\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.21_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"28\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"28\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.28_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"custom\\\"],[11,\\\"selected\\\",[28,\\\"await\\\",[[23,0,[\\\"showCustomField\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.custom_days\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,0,[\\\"showCustomField\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"value\\\",\\\"input\\\",\\\"class\\\"],[\\\"number\\\",\\\"0\\\",[24,[\\\"days\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateAndSetCustomDays\\\",[24,[\\\"days\\\"]]],null],\\\"form-control\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error_negative\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"field.error.negative\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNameField\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.select_name_field\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 \\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"name\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"nameField\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.default\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,2,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"alarmValue\\\",\\\"name\\\"]]],null]],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.select_send_to\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 \\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"sendto\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"sendto\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sendto_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"alarmValue\\\",\\\"sendto\\\"]]],null]],[8],[1,[23,1,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSaveButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"pull-left btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveAlarm\\\"]],[8],[1,[28,\\\"t\\\",[\\\"alarms.save\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/alarm-setter/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\n\nexport default class AppVersionDialogComponent extends Component {\n    @service('collector-service') Collector;\n    @service() gui;\n\n    @tracked completed;\n    get styleNamespace() {\n        return podNames['app-version-dialog'];\n    }\n    get isOtta() {\n        return this.Collector.testNeedsOne('products.generic_timetracker');\n    }\n    get currentLang() {\n        return moment.locale();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"zfw7BRMz\",\"block\":\"{\\\"symbols\\\":[\\\"@version\\\",\\\"@closeModal\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@class\\\",\\\"@header\\\",\\\"@hideClose\\\",\\\"@close\\\"],[[23,0,[\\\"styleNamespace\\\"]],[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null],\\\"deprecated\\\"],null],[28,\\\"t\\\",[\\\"app-version-dialog.update-available\\\"],null],[28,\\\"t\\\",[\\\"app-version-dialog.app-expired\\\"],null]],null],[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null],\\\"deprecated\\\"],null],false,true],null],[23,2,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dialog-body-text\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-5 pb-5\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null],\\\"deprecated\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"app-version-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null],\\\"deprecated\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.deprecation-text\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.deprecation-text-stop-working-1\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"days-until-expires\\\"],[8],[1,[23,1,[\\\"days_until_expires\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.deprecation-text-stop-working-2\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.expired-text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"link-to-store\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isOtta\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isAndroid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"https://play.google.com/store/apps/details?id=fi.movenium.visma\\\"],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"app-version-dialog.update-link-text\\\"],null],false],[9],[0,\\\"\\\\n                        (\\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.play-store-link\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[\\\"https://apps.apple.com/fi/app/visma-entry/id1281506211?l=\\\",[23,0,[\\\"currentLang\\\"]]]]],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"app-version-dialog.update-link-text\\\"],null],false],[9],[0,\\\"\\\\n                        (\\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.app-store-link\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isAndroid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"https://play.google.com/store/apps/details?id=fi.movenium.app\\\"],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"app-version-dialog.update-link-text\\\"],null],false],[9],[0,\\\"\\\\n                        (\\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.play-store-link\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[\\\"https://apps.apple.com/fi/app/movenium/id1037756306?l=\\\",[23,0,[\\\"currentLang\\\"]]]]],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"app-version-dialog.update-link-text\\\"],null],false],[9],[0,\\\"\\\\n                        (\\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.app-store-link\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"version-number\\\"],[8],[1,[28,\\\"t\\\",[\\\"app-version-dialog.version-code\\\"],null],false],[1,[28,\\\"get\\\",[[28,\\\"await\\\",[[23,1,[]]],null],\\\"version\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/app-version-dialog/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\n\n/**\n * \n * {{#auto-modal as |modal|}}\n        {{#modal.open}}<button {{action modal.show}}>open</button>{{/modal.open}}\n\n        {{#modal.content}}\n            modal content goes here\n\n            <button {{action (model.close)}}>close</button>\n        {{/modal.content}}\n    {{/auto-modal}}\n * \n */\nexport default Component.extend({\n    showModal: false,\n\n    actions: {\n        openModal() {\n            set(this, 'showModal', true);\n        },\n\n        closeModal() {\n            set(this, 'showModal', false);\n        },\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"i0IZMQHv\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/auto-modal/content/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"JmWej+6t\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/auto-modal/open/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"RoF1iiDN\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"open\\\",\\\"show\\\",\\\"close\\\"],[[28,\\\"component\\\",[\\\"auto-modal/open\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"header\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"content\\\",\\\"show\\\",\\\"close\\\"],[[28,\\\"component\\\",[\\\"auto-modal/content\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/auto-modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"hff7uudi\",\"block\":\"{\\\"symbols\\\":[\\\"@label\\\",\\\"@value\\\",\\\"@toggleValue\\\"],\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"beta-toggle\\\"],[11,\\\"data-anchor\\\",[29,[\\\"beta-toggle-\\\",[23,1,[]]]]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@value\\\",\\\"@theme\\\",\\\"@onToggle\\\",\\\"@offLabel\\\",\\\"@onLabel\\\",\\\"@showLabels\\\",\\\"@size\\\"],[[23,2,[]],\\\"light\\\",[23,3,[]],\\\"\\\",\\\"Beta\\\",true,\\\"large\\\"]]],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/beta-toggle/template.hbs\"}});","import Component from '@ember/component';\nimport moment from 'moment';\nimport { inject } from '@ember/service';\nimport { get, set, computed } from '@ember/object';\n\nexport default Component.extend({\n    blocks: inject(),\n    data: null,\n\n    _data: computed('data', function () {\n        let first = true;\n        let format = false;\n\n        get(this, 'data').forEach((item) => {\n            if (first) {\n                if (item[0] === 'date') format = true;\n                first = false;\n            } else if (format) {\n                item[0] = moment(item[0]).toDate();\n            }\n        });\n\n        return get(this, 'data');\n    }),\n\n    options: computed('title', function () {\n        return {\n            title: get(this, 'title'),\n        };\n    }),\n\n    didReceiveAttrs() {\n        if (get(this, 'url')) {\n            get(this, 'blocks')\n                .request(get(this, 'url'), {\n                    data: get(this, 'params'),\n                })\n                .then((data) => this._setData(data));\n        }\n    },\n\n    _setData(data) {\n        set(this, 'data', data);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"dHvZ/g71\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[[24,[\\\"type\\\"]],\\\"-chart\\\"],null]],[[\\\"data\\\",\\\"options\\\"],[[24,[\\\"_data\\\"]],[24,[\\\"options\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/blocks-chart/template.hbs\"}});","import Component from '@ember/component';\n\n/**\n * usage\n *\n *   <BootstrapField @text={{\"Field name\"}} @mandatory={{true}} @error={{someErrorText}} @name={{\"Name of the field\"}}>\n *       <Input @class=\"form-control\" />\n *   </BootstrapField>\n */\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"WFh7lD/w\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-field\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"title\\\"],[8],[1,[22,\\\"text\\\"],false],[9],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[23,0,[\\\"error\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[14,1],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/bootstrap-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-card-multi-day/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarCardMultiDayComponent;\n\nimport Ember from 'ember';\n\nCalendarCardMultiDayComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    end_field: 'enddate',\n    _data: Ember.computed('day', 'data.@each.date', function () {\n        return this.getData();\n    }),\n    _fields: Ember.computed('fields', function () {\n        var fields;\n        fields = this.get('fields');\n        if (Ember.typeOf(fields) === 'string') {\n            Em.assert(\n                'You need to provide the form if giving fields to calendar-card as string',\n                this.get('form'),\n            );\n            fields = this.get('Collector').fieldArray(this.get('form'), fields.split(','));\n        }\n        return fields;\n    }),\n    getData: function () {\n        var data, day, day_index, end, first, start;\n        data = this.get('data');\n        if (data) {\n            day = this.get('day');\n            start = this.get('date_field');\n            end = this.get('end_field');\n            first = this.get('date').split('_')[0];\n            day_index = this.get('index');\n            return data.map(function (item) {\n                if (item.get(start) <= day && item.get(end) >= day) {\n                    return Ember.Object.create({\n                        row: item,\n                        first: day === first || day_index === 0 ? true : false,\n                    });\n                } else if (\n                    day <= item.get(start) ||\n                    moment(day).week() > moment(item.get(end)).week()\n                ) {\n                    return false;\n                } else {\n                    return 'empty';\n                }\n            });\n        }\n    },\n    actions: {\n        click: function (row) {\n            if (this.get('onclick')) {\n                return this.onclick(row);\n            }\n        },\n        removeRecord: function (row) {\n            if (this.get('remove')) {\n                return this.remove(row);\n            }\n        },\n        showRemoveIcon: function (index) {\n            var elem;\n            elem = '.calendar-remove-item.num-' + index;\n            return $(elem).css('visibility', 'visible');\n        },\n        hideRemoveIcon: function (index) {\n            var elem;\n            elem = '.calendar-remove-item.num-' + index;\n            return $(elem).css('visibility', 'hidden');\n        },\n    },\n});\n\nexport default CalendarCardMultiDayComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-card-multi-day/content/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarCardMultiDayContentComponent;\n\nimport Ember from 'ember';\n\nCalendarCardMultiDayContentComponent = Ember.Component.extend();\n\nexport default CalendarCardMultiDayContentComponent;\n","export default Ember.HTMLBars.template({\"id\":\"vw8Sb986\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"index\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[24,[\\\"row\\\"]],\\\"status\\\"],null],\\\"fixed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"status-icon\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCircle\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"day-fields\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"date_field\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]],[28,\\\"get\\\",[[24,[\\\"row\\\"]],[23,1,[\\\"name\\\"]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    - \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]],[28,\\\"get\\\",[[24,[\\\"row\\\"]],[23,1,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card-multi-day/content/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"qOt1z9iH\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"idx\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"_data\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"empty\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-multi-day empty-card\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"remove\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,1,[\\\"row\\\"]],[24,[\\\"end_field\\\"]]],null],[24,[\\\"day\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"row\\\",\\\"isRemovable\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"calendar-remove-item move move-Cancel num-\\\",[23,2,[]]]]],[12,\\\"onmouseenter\\\",[28,\\\"action\\\",[[23,0,[]],\\\"showRemoveIcon\\\",[23,2,[]]],null]],[12,\\\"onmouseleave\\\",[28,\\\"action\\\",[[23,0,[]],\\\"hideRemoveIcon\\\",[23,2,[]]],null]],[3,\\\"action\\\",[[23,0,[]],\\\"removeRecord\\\",[23,1,[\\\"row\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"card-multi-day \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,1,[\\\"row\\\"]],[24,[\\\"date_field\\\"]]],null],[24,[\\\"day\\\"]]],null],\\\"first-day\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,1,[\\\"row\\\"]],[24,[\\\"end_field\\\"]]],null],[24,[\\\"day\\\"]]],null],\\\"last-day\\\"],null]]]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[\\\"row\\\"]]],null]],[11,\\\"onmouseenter\\\",[28,\\\"action\\\",[[23,0,[]],\\\"showRemoveIcon\\\",[23,2,[]]],null]],[11,\\\"onmouseleave\\\",[28,\\\"action\\\",[[23,0,[]],\\\"hideRemoveIcon\\\",[23,2,[]]],null]],[11,\\\"style\\\",[29,[\\\"border-color:\\\",[28,\\\"randomize-color\\\",null,[[\\\"record\\\",\\\"fields\\\"],[[23,1,[\\\"row\\\"]],[24,[\\\"randomColor\\\"]]]]],\\\";\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,1,[\\\"row\\\"]],[24,[\\\"date_field\\\"]]],null],[24,[\\\"day\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-card-multi-day/content\\\",null,[[\\\"row\\\",\\\"_fields\\\",\\\"date_field\\\"],[[23,1,[\\\"row\\\"]],[24,[\\\"_fields\\\"]],[24,[\\\"date_field\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"first\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-card-multi-day/content\\\",null,[[\\\"row\\\",\\\"_fields\\\",\\\"date_field\\\"],[[23,1,[\\\"row\\\"]],[24,[\\\"_fields\\\"]],[24,[\\\"date_field\\\"]]]]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[14,3,[[23,1,[\\\"row\\\"]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1,2]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card-multi-day/template.hbs\"}});","import { assert } from '@ember/debug';\nimport { computed, get } from '@ember/object';\nimport Component from '@ember/component';\nimport { defineProperty } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    filteredModel: computed('model', function () {\n        const date = get(this, 'date');\n        const fields = get(this, 'fields');\n        const model = get(this, 'model');\n        if (isEmpty(model)) {\n            return [];\n        }\n        return model.filterBy(fields.date, date);\n    }),\n\n    init() {\n        this._super(...arguments);\n        const date = get(this, 'date');\n        const fields = get(this, 'fields');\n        assert('Date must be given for what day we are filtering sums', date);\n        assert('Fields must be given and contain date and hour field names', fields);\n        assert('Date field name must be given', fields.date);\n        assert('Hours field name must be given from where we calculate hours', fields.hours);\n        defineProperty(\n            this,\n            'sum',\n            computed('filteredModel', 'model.@each.' + fields.hours, function () {\n                const model = get(this, 'filteredModel');\n                const date = get(this, 'date');\n                const fields = get(this, 'fields');\n                assert(\n                    'Model must be given that has the rows from where sums should be calculated',\n                    model,\n                );\n                let sum = null;\n\n                model.filterBy(fields.date, date).forEach((item) => {\n                    if (sum === null) sum = 0;\n                    sum += get(item, fields.hours);\n                });\n\n                if (sum) {\n                    sum = Number(sum);\n                    if (!isNaN(sum)) {\n                        sum = sum.toFixed(2);\n                    }\n                }\n                return sum;\n            }),\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"JCC5+HKn\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[24,[\\\"sum\\\"]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card-sum/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-card-v2/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarCardComponent;\n\nimport Ember from 'ember';\n\nCalendarCardComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    classNames: ['calendar-card'],\n    _data: Ember.computed('day', 'data.@each.date', function () {\n        return this.getData();\n    }),\n    _fields: Ember.computed('fields', function () {\n        var boldArray, fields;\n        fields = this.get('fields');\n        boldArray = this.get('boldFields') ? this.get('boldFields').split(' ') : [];\n        this.set('boldArray', boldArray);\n        if (Ember.typeOf(fields) === 'string') {\n            Em.assert(\n                'You need to provide the form if giving fields to calendar-card as string',\n                this.get('form'),\n            );\n            fields = this.get('Collector').fieldArray(this.get('form'), fields.split(','));\n        }\n        fields.forEach((item, i, arr) => {\n            if (boldArray.includes(item.name)) {\n                return arr.push(arr.splice(i, 1)[0]);\n            }\n        });\n        return fields;\n    }),\n    getData: function () {\n        var data;\n        data = this.get('data');\n        if (data) {\n            return data.filterBy(this.get('date_field'), this.get('day'));\n        }\n    },\n    actions: {\n        click: function (row) {\n            if (this.get('onclick')) {\n                return this.onclick(row);\n            }\n        },\n        removeRecord: function (row) {\n            if (this.get('remove')) {\n                return this.remove(row);\n            }\n        },\n    },\n});\n\nexport default CalendarCardComponent;\n","export default Ember.HTMLBars.template({\"id\":\"3NsYupcw\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"field\\\",\\\"index\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"_data\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"remove\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"isRemovable\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"calendar-remove-item move move-Cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeRecord\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[]]],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"topImage\\\"]],\\\"user-image\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"float:right\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"user-icon\\\",[[23,1,[\\\"user\\\",\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],[[\\\"text\\\"],[[28,\\\"concat\\\",[[23,1,[\\\"user\\\",\\\"firstname\\\"]],\\\" \\\",[23,1,[\\\"user\\\",\\\"lastname\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"_fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"date_field\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,3,[]],0],null],[28,\\\"not\\\",[[24,[\\\"boldFields\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[\\\"name\\\"]],[23,2,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[\\\"name\\\"]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"boldArray\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h5\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[\\\"name\\\"]],[23,2,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,2,[\\\"name\\\"]],[23,2,[\\\"form\\\"]]]]],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[23,2,[\\\"form\\\"]],[23,2,[\\\"name\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"        \\\"],[14,4,[[23,1,[]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card-v2/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-card/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarCardComponent;\n\nimport Ember from 'ember';\n\nCalendarCardComponent = Ember.Component.extend({\n    didReceiveAttrs: function () {\n        return this.setData();\n    },\n    setData: function () {\n        var formatted_data, rows;\n        formatted_data = this.get('formatted_data');\n        // first_column_is_date = false\n        if (formatted_data) {\n            rows = formatted_data.filterBy('cal_date_value', this.get('day'));\n            return this.set('currentDayData', rows);\n        }\n    },\n});\n\nexport default CalendarCardComponent;\n","export default Ember.HTMLBars.template({\"id\":\"AX1K24ti\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"column\\\",\\\"index\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"currentDayData\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[]],[24,[\\\"date_field\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,2,[]],[24,[\\\"form\\\"]]]]],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card/template.hbs\"}});","import Component from '@ember/component';\nimport moment from 'moment';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    dates: computed('range', function () {\n        function getRangeOfDates(start, end, key, arr = [start.startOf(key)]) {\n            if (start.isAfter(end)) throw new Error('start must precede end');\n            if (!key) throw new Error('key must be given');\n            const next = moment(start).add(1, key).startOf(key);\n\n            if (next.isAfter(end, key)) return arr;\n\n            return getRangeOfDates(next, end, key, arr.concat(next));\n        }\n        if (!get(this, 'range')) return [];\n        const [start, end] = get(this, 'range').split('_');\n        return getRangeOfDates(moment(start), moment(end), 'day');\n    }),\n\n    fixedCellWidths: computed('range', function () {\n        return get(this, 'dates.length') * 35 > this.element.offsetWidth;\n    }),\n});\n","import Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'tr',\n\n    toDay: computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"vOoGuv10\",\"block\":\"{\\\"symbols\\\":[\\\"date\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"toDay\\\"]],[28,\\\"moment-format\\\",[[23,1,[]],\\\"YYYY-MM-DD\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"today\\\"],[8],[1,[28,\\\"moment-format\\\",[[23,1,[]],\\\"DD\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[]],\\\"DD\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"th\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/days-header/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'tr',\n\n    _dates: computed('dates', function () {\n        return get(this, 'dates').map((date, index) => {\n            if (index == 0 && moment(date).format('D') <= 26) return date; // show month in first column if next month is at least 4 days from this date\n            return moment(date).format('D') === '1' ? date : ''; // show date string on every month change column\n        });\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"bN6WTn+S\",\"block\":\"{\\\"symbols\\\":[\\\"date\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[]],\\\"MMMM YYYY\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"th\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/months-header/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, set, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'div',\n    classNames: ['day-cell-bar'],\n    startDateField: 'date',\n    endDateField: 'enddate',\n    colorString: computed('colorFields', function () {\n        const row = get(this, 'cellRows.firstObject');\n        let string = '';\n        get(this, 'colorFields').forEach((field) => {\n            string += get(row, field);\n        });\n        return string;\n    }),\n\n    init() {\n        this._super(...arguments);\n        if (!this.colorFields) {\n            set(this, 'colorFields', ['user.id', 'id']);\n        }\n    },\n    //classNameBindings: ['hasRows:day-empty'],\n    //hasRows: notEmpty('rows')\n});\n","export default Ember.HTMLBars.template({\"id\":\"Bd6XHatS\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"cell-block \\\",[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"startDateField\\\"]]],null],[28,\\\"moment-format\\\",[[24,[\\\"cellDate\\\"]],\\\"YYYY-MM-DD\\\"],null]],null],[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"endDateField\\\"]]],null]],null],\\\"cell-block-first\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"endDateField\\\"]]],null],[28,\\\"moment-format\\\",[[24,[\\\"cellDate\\\"]],\\\"YYYY-MM-DD\\\"],null]],null],\\\"cell-block-last\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"not\\\",[[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"endDateField\\\"]]],null]],null],\\\"cell-block-single\\\"],null]]]],[11,\\\"style\\\",[29,[\\\"background-color:\\\",[28,\\\"randomize-color\\\",[[24,[\\\"colorString\\\"]]],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"startDateField\\\"]]],null],[28,\\\"moment-format\\\",[[24,[\\\"cellDate\\\"]],\\\"YYYY-MM-DD\\\"],null],[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"endDateField\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"cell-block-info\\\"],[8],[0,\\\"\\\\n            \\\"],[14,1],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/bar/template.hbs\"}});","import Component from '@ember/component';\nimport { notEmpty } from '@ember/object/computed';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'td',\n    classNames: ['day-cell'],\n    classNameBindings: ['hasRows:day-empty', 'isWeekend:weekend'],\n    hasRows: notEmpty('rows'),\n\n    isWeekend: computed(function () {\n        const weekday = moment(get(this, 'date')).format('d');\n        if (weekday == 0 || weekday == 6) return true;\n\n        return false;\n    }),\n});\n","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'div',\n    classNames: ['day-cell-bar'],\n    //classNameBindings: ['hasRows:day-empty'],\n    //hasRows: notEmpty('rows')\n\n    blockWidth: 35,\n\n    dayCount: 3 /*computed(\"rows\", function() {\n       return this.get(\"rows.length\")\n    }),*/,\n\n    widthInPixels: computed('dayCount', function () {\n        return get(this, 'dayCount') * get(this, 'blockWidth') - 4 + 'px';\n    }),\n\n    isFirst: computed('rows', 'date', function () {\n        return moment(get(this, 'rows.firstObject.date')).isSame(get(this, 'date'), 'day');\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"V36ShUgb\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"isFirst\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"cell-block-long-bar\\\"],[11,\\\"style\\\",[29,[\\\"width: \\\",[22,\\\"widthInPixels\\\"],\\\"; background-color:\\\",[28,\\\"randomize-color\\\",[[28,\\\"concat\\\",[[24,[\\\"rows\\\",\\\"firstObject\\\",\\\"user\\\",\\\"id\\\"]],[24,[\\\"cellRows\\\",\\\"firstObject\\\",\\\"id\\\"]]],null]],null]]]],[8],[0,\\\"\\\\n    \\\"],[14,1],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/long-bar/template.hbs\"}});","import Component from '@ember/component';\nimport { get } from '@ember/object';\n\nexport default Component.extend({\n    actions: {\n        addNew(user) {\n            this.onAdd(moment(get(this, 'date')).format('YYYY-MM-DD'), user);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"89Zfel9S\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"calendar-plus-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNew\\\",[24,[\\\"user\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"plus move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/plus-button/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    actions: {\n        editRow(row) {\n            this.onEdit(row);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Kv53hphM\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"field\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"rows\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"report.\\\",[24,[\\\"form\\\"]],\\\".\\\",[23,2,[\\\"name\\\"]]],null]],null],false],[0,\\\":\\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[\\\"name\\\"]],[24,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[28,\\\"concat\\\",[[23,2,[\\\"name\\\"]]],null]],null]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[4,\\\"if\\\",[[23,1,[\\\"isEditable\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editRow\\\",[23,1,[]]]],[8],[9],[7,\\\"br\\\",true],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,1,[]],[24,[\\\"rows\\\",\\\"lastObject\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/popover-content-fields/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"OJSfJrPo\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"rows\\\",\\\"date\\\",\\\"bar\\\",\\\"long-bar\\\"],[[24,[\\\"rows\\\"]],[24,[\\\"date\\\"]],[28,\\\"component\\\",[\\\"calendar-compact/row/cell/bar\\\"],[[\\\"cellRows\\\",\\\"cellDate\\\"],[[24,[\\\"rows\\\"]],[24,[\\\"date\\\"]]]]],[28,\\\"component\\\",[\\\"calendar-compact/row/cell/long-bar\\\"],[[\\\"rows\\\",\\\"date\\\"],[[24,[\\\"rows\\\"]],[24,[\\\"date\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"],[4,\\\"ember-popover\\\",null,[[\\\"event\\\",\\\"hideOn\\\",\\\"popoverHideDelay\\\",\\\"class\\\"],[\\\"click\\\",\\\"mouseleave\\\",1000,\\\"ember-popover\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"popover-content-fields\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row/cell/popover-content-fields\\\"],[[\\\"rows\\\"],[[24,[\\\"rows\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"plus-button\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row/cell/plus-button\\\"],[[\\\"user\\\",\\\"date\\\"],[[24,[\\\"user\\\"]],[24,[\\\"date\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'tr',\n});\n","export default Ember.HTMLBars.template({\"id\":\"ChMHoIfw\",\"block\":\"{\\\"symbols\\\":[\\\"date\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"cell\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row/cell\\\"],[[\\\"rows\\\",\\\"user\\\",\\\"date\\\"],[[28,\\\"get\\\",[[24,[\\\"row\\\",\\\"rows\\\"]],[28,\\\"moment-format\\\",[[23,1,[]],\\\"YYYY-MM-DD\\\"],null]],null],[24,[\\\"row\\\",\\\"main\\\"]],[23,1,[]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[14,2,[[28,\\\"hash\\\",null,[[\\\"title\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row/title\\\"],[[\\\"title\\\"],[[24,[\\\"row\\\",\\\"main\\\"]]]]]]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    flags: service(),\n    tagName: 'td',\n    classNames: 'title-cell',\n    // we can use classnamebindings to add a css-class to the element based on some computed property\n    classNameBindings: ['isTopMenu:top-menu-left-margin-fix'],\n    isTopMenu: computed(function () {\n        return get(this, 'flags').test('top-header-menu');\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"Ej2MQ/V/\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[24,[\\\"title\\\"]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/title/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"aDYqsgEC\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"table\\\",true],[11,\\\"class\\\",[29,[\\\"table \\\",[28,\\\"if\\\",[[24,[\\\"fixedCellWidths\\\"]],\\\"fixed\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n        \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"months-header\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/months-header\\\"],[[\\\"dates\\\"],[[24,[\\\"dates\\\"]]]]]]]]]],[0,\\\"\\\\n        \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"weeks-header\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/weeks-header\\\"],[[\\\"dates\\\"],[[24,[\\\"dates\\\"]]]]]]]]]],[0,\\\"\\\\n        \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"days-header\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/days-header\\\"],[[\\\"dates\\\"],[[24,[\\\"dates\\\"]]]]]]]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"row\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row\\\"],[[\\\"row\\\",\\\"dates\\\"],[[23,1,[]],[24,[\\\"dates\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'tr',\n});\n","export default Ember.HTMLBars.template({\"id\":\"/p8PnPvd\",\"block\":\"{\\\"symbols\\\":[\\\"date\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"moment-format\\\",[[23,1,[]],\\\"E\\\"],null],\\\"1\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[]],\\\"W\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"th\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/weeks-header/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-report-add-options/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarReportAddOptionsComponent;\n\nimport Ember from 'ember';\n\nimport clickelsewhere from 'tt4/mixins/clickelsewhere';\n\nCalendarReportAddOptionsComponent = Ember.Component.extend(clickelsewhere, {\n    Collector: Ember.inject.service('collector-service'),\n    analytics: Ember.inject.service(),\n    showOptions: false,\n    onClickElsewhere: function () {\n        return this.set('showOptions', false);\n    },\n    addableOptions: Ember.computed('options.[]', function () {\n        var c;\n        c = this.get('Collector');\n        return this.get('options').filter((option) => {\n            if (option === 'worktime') {\n                return c.canAddWorktime(this.get('date')) && !c.hasErrors(option);\n            }\n            return !c.hasErrors(option);\n        });\n    }),\n    actions: {\n        toggleOptions: function () {\n            if (this.get('addableOptions.length') === 1) {\n                return this.send('addRecord', this.get('addableOptions.firstObject'));\n            } else {\n                return this.toggleProperty('showOptions');\n            }\n        },\n        addRecord: function (type) {\n            if (type === 'worktime') {\n                this.get('analytics').customData = { category: 'calendar-report' };\n            }\n            if (this.get('add')) {\n                this.add(type);\n            }\n            return this.set('showOptions', false);\n        },\n    },\n});\n\nexport default CalendarReportAddOptionsComponent;\n","export default Ember.HTMLBars.template({\"id\":\"j6Wn8Crl\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\"],\\\"statements\\\":[[1,[28,\\\"calendar-report-add\\\",null,[[\\\"options\\\",\\\"click\\\"],[[24,[\\\"options\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleOptions\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"options\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showOptions\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"addableOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addRecord\\\",[23,1,[]]]],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"menu.add_\\\",[23,1,[]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-report-add-options/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-report-add/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarReportAddComponent;\n\nimport Ember from 'ember';\n\nCalendarReportAddComponent = Ember.Component.extend({\n    classNames: 'calendar-report-add',\n});\n\nexport default CalendarReportAddComponent;\n","export default Ember.HTMLBars.template({\"id\":\"LWkDFOXy\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"plus-button\\\"],[8],[0,\\\"\\\\n   \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-report-add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-report-day/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarReportDayComponent;\n\nimport Ember from 'ember';\n\nCalendarReportDayComponent = Ember.Component.extend({\n    isToday: Ember.computed('day', function () {\n        return moment().isSame(this.get('day'), 'day');\n    }),\n    utcday: Ember.computed('day', function () {\n        if (!this.get('day') || this.get('day') === '') {\n            return;\n        }\n        return moment(this.get('day')).format('DD.MM');\n    }),\n});\n\nexport default CalendarReportDayComponent;\n","export default Ember.HTMLBars.template({\"id\":\"x0EXKL26\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"p\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"isToday\\\"]],\\\"istoday\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"dateNonBlock\\\"]],\\\"non-block\\\"],null]]]],[8],[4,\\\"if\\\",[[24,[\\\"utcday\\\"]]],null,{\\\"statements\\\":[[1,[22,\\\"utcday\\\"],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\" \\\"]],\\\"parameters\\\":[]}],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"specialDay\\\"]]],null,{\\\"statements\\\":[[0,\\\" - \\\"],[7,\\\"b\\\",true],[8],[1,[22,\\\"specialDay\\\"],false],[9]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[14,1],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-report-day/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-report/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarReportComponent;\n\nimport Ember from 'ember';\n\n//import collector from '../../classes/collector'\nCalendarReportComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    store: Ember.inject.service(),\n    date:\n        moment.utc().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment.utc().endOf('month').format('YYYY-MM-DD'),\n    hideWeekend: true,\n    showWeekend: Ember.computed.not('hideWeekend'),\n    workdays: Ember.computed('user', 'date', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                var c, params;\n                c = this.get('Collector');\n                params = {\n                    country: this.get('session.currentUser.company_info.country'),\n                    date: this.get('date'),\n                };\n                if (c.formExists('worktimegroup') && this.get('user')) {\n                    // Use peekRecord instead of findRecord, temporary fix for Foreman issue EP-13300\n                    const record = this.store.peekRecord('user', this.get('user'));\n                    params['worktimegroup'] = record.get('worktimegroup.id')\n                        ? record.get('worktimegroup.id')\n                        : null;\n                }\n                return this.get('store')\n                    .query('workday-day', params)\n                    .then((rows) => {\n                        var days;\n                        days = {};\n                        rows.forEach((row) => {\n                            return (days[row.get('date')] = row.get('desc'));\n                        });\n                        return resolve({\n                            value: days,\n                        });\n                    });\n            }),\n        });\n    }),\n    calendar: Ember.computed('date', function () {\n        const extractDates = (dateString) => {\n            const [start, end] = dateString.split('_');\n            return { startDay: moment.utc(start).toDate(), endDay: moment.utc(end).toDate() };\n        };\n        const weekdayNames = [\n            'monday',\n            'tuesday',\n            'wednesday',\n            'thursday',\n            'friday',\n            'saturday',\n            'sunday',\n        ];\n        const { startDay, endDay } = extractDates(this.get('date'));\n        // Get days between start and end\n        const days = [];\n        let day = startDay;\n        while (day <= endDay) {\n            days.push(day);\n            day = moment.utc(day).add(1, 'day').toDate();\n        }\n        // Get week number(s) between start and end\n        const weekNumbers = [];\n        let week = moment(startDay).startOf('isoWeek').toDate();\n        while (week <= endDay) {\n            weekNumbers.push(moment(week).isoWeek());\n            week = moment(week).add(1, 'week').toDate();\n        }\n        // Create array for each week\n        const weekArrays = [];\n        weekNumbers.forEach(() => {\n            weekArrays.push(['', '', '', '', '', '', '']);\n        });\n        // Fill week arrays with their days\n        weekArrays.forEach((weekArray) => {\n            for (let i = 0; i < 7; i++) {\n                const _day = days.shift();\n                if (!_day) break;\n                const index = weekdayNames.indexOf(\n                    _day.toLocaleDateString('en', { weekday: 'long' }).toLowerCase(),\n                );\n                weekArray[index] = _day;\n                if (index === 6 || days.length === 0) break;\n            }\n        });\n        // Format week array dates\n        const formattedWeekArrays = weekArrays.map((weekArray) => {\n            return weekArray.map((weekday) => {\n                if (weekday === '') return weekday;\n                else return moment(weekday).format('YYYY-MM-DD');\n            });\n        });\n        // Create object with week numbers as keys and week arrays as values (i.e 202309: [....])\n        let weekObject = {};\n        let currentYear = moment().year();\n        let lastWeekNumber = 0; // Variable to keep track of the last week number\n\n        weekNumbers.forEach((weekNumber, index) => {\n            // Check if the weekNumber has rolled over to the next year\n            if (weekNumber < lastWeekNumber) {\n                currentYear++;\n            }\n            // Update the lastWeekNumber for the next iteration\n            lastWeekNumber = weekNumber;\n            // Generate the key for weekObject\n            let key =\n                weekNumber < 10 ? `${currentYear}0${weekNumber}` : `${currentYear}${weekNumber}`;\n            weekObject[key] = formattedWeekArrays[index];\n        });\n        return weekObject;\n    }),\n    actions: {\n        fullScreen: function () {\n            if (this.get('fullscreenmode') === 'custom') {\n                return this.get('gui').toggleCustomFullScreen();\n            } else {\n                return this.get('gui').togglefullScreen();\n            }\n        },\n        toggleHideWeekend: function () {\n            return this.toggleProperty('hideWeekend');\n        },\n    },\n});\n\nexport default CalendarReportComponent;\n","export default Ember.HTMLBars.template({\"id\":\"MJ0Ky2Ji\",\"block\":\"{\\\"symbols\\\":[\\\"week\\\",\\\"key\\\",\\\"day\\\",\\\"index\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hideDateRangePicker\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-8 col-sm-4 text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"date-range-picker\\\",null,[[\\\"value\\\"],[[24,[\\\"date\\\"]]]]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"report-main-zoomed\\\"],null],\\\" calendar-report\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row no-margin-row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right report-button-row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"fullscreenmode\\\"]],\\\"custom\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right report-button-row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more weekend-toggle\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"showWeekend\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleHideWeekend\\\"],null],\\\"light\\\",[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"calendar.hide.weekend\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped table-responsive\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"no-borders\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.monday\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.tuesday\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.wednesday\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.thursday\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.friday\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideWeekend\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.saturday\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.sunday\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"calendar\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"week-number no-borders\\\"],[8],[1,[28,\\\"moment-format\\\",[[23,2,[]],\\\"ww\\\",\\\"YYYYww\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"and\\\",[[24,[\\\"hideWeekend\\\"]],[28,\\\"is-weekend\\\",[[28,\\\"add\\\",[[23,4,[]],1],null]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[11,\\\"class\\\",[29,[\\\"day \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[]],\\\"\\\"],null],\\\"day-inactive\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"workdays\\\",\\\"value\\\"]],[23,3,[]]],null],\\\"day-special\\\"],null],\\\" \\\",[28,\\\"concat\\\",[\\\"weekday-\\\",[23,4,[]]],null]]]],[8],[0,\\\"\\\\n\\\"],[0,\\\"                            \\\"],[14,5,[[23,3,[]],[23,4,[]],[28,\\\"get\\\",[[24,[\\\"workdays\\\",\\\"value\\\"]],[23,3,[]]],null]]],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3,4]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-report/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action, get } from '@ember/object';\n\nexport default class CcbuttonComponent extends Component {\n    @tracked integrations;\n    @tracked saving = false;\n    @tracked selected = null;\n    @tracked errorMessage = null;\n    @tracked values = {};\n    @service store;\n    @service ttapi;\n    @service notifications;\n    @service intl;\n    @service error;\n\n    constructor() {\n        super(...arguments);\n        this.load();\n    }\n\n    async load() {\n        const integrations = await this.store.findAll('ccbutton');\n\n        const running = await this.store.query('ccbuttonexecution', {\n            filter: { 'attributes.state': 'running' },\n        });\n\n        const oldRows = running.filter((item) =>\n            moment(item.started).isBefore(moment().subtract(1, 'hour')),\n        );\n\n        oldRows.forEach((record) => {\n            record.state = 'error';\n            record.save();\n        });\n\n        this.integrations = integrations.map((item) => {\n            return {\n                id: item.id,\n                name: item.name,\n                disabled: running.find((a) => {\n                    if (!a.ccbutton) return false;\n                    if (a.state !== 'running') return false;\n                    return get(a, 'ccbutton.id') === get(item, 'id');\n                })\n                    ? true\n                    : false,\n            };\n        });\n    }\n\n    get selectedIntegrationName() {\n        return this.store.peekRecord('ccbutton', this.selected).name;\n    }\n\n    get fields() {\n        let fields = this.store.peekRecord('ccbutton', this.selected).fields;\n        if (!fields) return [];\n        fields = fields.split(',');\n        return fields.map((field) => {\n            if (field.includes('.')) {\n                const [form, fieldName] = field.split('.');\n                return { form, fieldName };\n            }\n            return { form: 'worktime', fieldName: field };\n        });\n    }\n\n    @action async execute() {\n        this.saving = true;\n        this.errorMessage = null;\n\n        const queryParams = Object.keys(this.values).map((key) => {\n            const value = this.values[key];\n            return key + '=' + (value.id ? value.id : value);\n        });\n        queryParams.push('blocking=' + this.store.peekRecord('ccbutton', this.selected).blocking);\n        if (this.store.peekRecord('ccbutton', this.selected).token) queryParams.push('token=true');\n\n        try {\n            await this.ttapi.request(\n                'api/ccbutton/execute/' + this.selected + '?' + queryParams.join('&'),\n                { method: 'post' },\n            );\n            this.notifications.success(this.intl.t('integrations.started'), { autoClear: true });\n            this.selected = null;\n        } catch (e) {\n            this.errorMessage = get(e, 'payload.message') || e;\n        }\n\n        this.saving = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"dpW+NjTg\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"integration\\\",\\\"&default\\\"],\\\"statements\\\":[[14,3],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-33 pr-4\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"bootstrap-field\\\",[[12,\\\"class\\\",\\\"mt-6\\\"]],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"menu.integrations\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"selected\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[10,\\\"class\\\",\\\"form-control mb-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"integrations.select\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"integrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"disabled\\\",[23,2,[\\\"disabled\\\"]]],[11,\\\"value\\\",[23,2,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[24,[\\\"selected\\\"]],[23,2,[\\\"id\\\"]]],null]],[8],[1,[23,2,[\\\"name\\\"]],false],[0,\\\" \\\"],[4,\\\"if\\\",[[23,2,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"integration.not_done\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column center\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-primary mt-0 mb-2\\\"],[8],[1,[23,0,[\\\"selectedIntegrationName\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[]],\\\"date_interval\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"report.worktime.date\\\"],null]]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n                            \\\"],[5,\\\"date-range-picker\\\",[[12,\\\"class\\\",\\\"pb-4\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"values\\\",\\\"date\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[23,1,[\\\"form\\\"]],\\\".\\\",[23,1,[\\\"fieldName\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"addon/field-container\\\",[],[[\\\"@field\\\",\\\"@value\\\",\\\"@onChange\\\"],[[28,\\\"concat\\\",[[23,1,[\\\"form\\\"]],\\\".\\\",[23,1,[\\\"fieldName\\\"]]],null],[28,\\\"get\\\",[[23,0,[\\\"values\\\"]],[23,1,[\\\"fieldName\\\"]]],null],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[28,\\\"get\\\",[[23,0,[\\\"values\\\"]],[23,1,[\\\"fieldName\\\"]]],null]],null]],null]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column pt-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pr-2\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"saveButtonText\\\"],[[23,0,[\\\"saving\\\"]],[23,0,[\\\"execute\\\"]],\\\"btn btn-primary btn-block\\\",[28,\\\"t\\\",[\\\"integrations.execute\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pl-2\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[24,[\\\"selected\\\"]]],null],false],null]]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[23,0,[\\\"errorMessage\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"integrations.select_first\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/ccbutton/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/change-status/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport { pluralize } from 'ember-inflector';\n\nComponent = Ember.Component.extend({\n    notifications: Ember.inject.service(),\n    store: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    rowCount: Ember.computed('params.rowCount', function () {\n        return this.get('params.rowCount');\n    }),\n    rowHeap: [],\n    fullHeapSize: 0,\n    done: false,\n    numericalProgress: 0,\n    progress: Ember.computed('numericalProgress', function () {\n        return this.get('numericalProgress') + ' %';\n    }),\n    progressStyle: Ember.computed('progress', function () {\n        return Ember.String.htmlSafe('width: ' + this.get('numericalProgress') + '%');\n    }),\n    setStatusForAll: function (changeData) {\n        var data, form, reqParams;\n        reqParams = this.get('params.requestParams');\n        form = this.get('params.form');\n        data = {};\n        data[form] = changeData;\n        this.set('executing', true);\n        return this.get('store')\n            .query(form, reqParams)\n            .then((rows) => {\n                var array_row_ids, chunkSize, handled, i, j, promises, ref, row_ids, slices;\n                row_ids = [];\n                array_row_ids = [];\n                rows.forEach((row) => {\n                    return row_ids.push(row.get('id'));\n                });\n                // set size of id's to capi multiedit\n                chunkSize = 10;\n                slices = Math.ceil(row_ids.length / chunkSize);\n                //covert long id array to chunks of max chunkSize\n                for (\n                    i = j = 0, ref = slices;\n                    0 <= ref ? j < ref : j > ref;\n                    i = 0 <= ref ? ++j : --j\n                ) {\n                    array_row_ids.push(row_ids.slice(i * chunkSize, (i + 1) * chunkSize));\n                }\n                promises = [];\n                handled = 0;\n                array_row_ids.forEach((item) => {\n                    var form_plural, promise;\n                    data[form].id = item;\n                    data[form].meta = {\n                        insert_history: 'true',\n                    };\n                    form_plural = pluralize(form).camelize();\n                    promise = this.get('capi')\n                        .request('/' + form_plural, {\n                            dataType: 'json',\n                            type: 'PUT',\n                            data: JSON.stringify(data),\n                        })\n                        .then(() => {\n                            handled++;\n                            return this.set(\n                                'numericalProgress',\n                                Math.ceil((handled / array_row_ids.length) * 100),\n                            );\n                        })\n                        .catch((e) => {\n                            this.get('notifications').error(e, {\n                                autoClear: true,\n                            });\n                            handled++;\n                            return this.set(\n                                'numericalProgress',\n                                Math.ceil((handled / array_row_ids.length) * 100),\n                            );\n                        });\n                    return promises.push(promise);\n                });\n                return Em.RSVP.Promise.all(promises).then(() => {\n                    this.set('executing', false);\n                    return this.set('done', true);\n                });\n            });\n    },\n    actions: {\n        closeModal: function () {\n            return this.sendAction('close');\n        },\n        changeStatusForAll: function () {\n            var action, changeData, locked, status;\n            action = this.get('params.action');\n            status = this.get('params.status');\n            if (action === 'lock' || action === 'unlock') {\n                locked = this.get('params.action') === 'lock' ? true : false;\n                changeData = {\n                    locked: locked,\n                };\n            } else {\n                changeData = {\n                    status: status,\n                };\n            }\n            return this.setStatusForAll(changeData);\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"xuLUYyz2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.change_status_to_all_header\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.change_status_to_all\\\"],[[\\\"count\\\"],[[24,[\\\"rowCount\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"general.done\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"20\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[22,\\\"progressStyle\\\"]],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"progress\\\"],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatusForAll\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.change_status_to_all_button\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/change-status/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"RsglJR6M\",\"block\":\"{\\\"symbols\\\":[\\\"@animate\\\"],\\\"statements\\\":[[7,\\\"svg\\\",true],[10,\\\"class\\\",\\\"clock\\\"],[10,\\\"width\\\",\\\"30\\\"],[10,\\\"height\\\",\\\"30\\\"],[10,\\\"viewBox\\\",\\\"0 0 24 24\\\"],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[8],[0,\\\"\\\\n\\\\n \\\"],[7,\\\"g\\\",true],[8],[0,\\\"\\\\n  \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"m9,0l0,2l6,0l0,-2l-6,0zm2,3l0,1.0625c-5.06474,0.49692 -9,4.73956 -9,9.9375c0,5.53333 4.46667,10 10,10c5.53333,0 10,-4.46667 10,-10c0,-2.91958 -1.26241,-5.51752 -3.25,-7.34375l1.34375,-1.34375l-1.40625,-1.40625l-1.53125,1.53125c-1.23644,-0.74298 -2.64489,-1.22671 -4.15625,-1.375l0,-1.0625l-2,0zm1,3c4.46667,0 8,3.53333 8,8c0,4.46667 -3.53333,8 -8,8c-4.46667,0 -8,-3.53333 -8,-8c0,-4.46667 3.53333,-8 8,-8z\\\"],[10,\\\"shape-rendering\\\",\\\"geometricPrecision\\\"],[8],[9],[0,\\\"\\\\n  \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"m6.68738,8.49994l3.5625,4.96875c-0.04601,0.16835 -0.0625,0.34831 -0.0625,0.53125c0,1.10457 0.89543,2 2,2c1.10457,0 2,-0.89543 2,-2c0,-1.10457 -0.89543,-2 -2,-2c-0.18294,0 -0.3629,0.01649 -0.53125,0.0625l-4.96875,-3.5625z\\\"],[10,\\\"shape-rendering\\\",\\\"geometricPrecision\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"animateTransform\\\",true],[10,\\\"attributeName\\\",\\\"transform\\\"],[10,\\\"attributeType\\\",\\\"XML\\\"],[10,\\\"from\\\",\\\"0 12 14\\\"],[10,\\\"to\\\",\\\"360 12 14\\\"],[10,\\\"dur\\\",\\\"60s\\\"],[10,\\\"repeatCount\\\",\\\"indefinite\\\"],[10,\\\"type\\\",\\\"rotate\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/clock/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\nimport { tracked } from '@glimmer/tracking';\nimport { later, next } from '@ember/runloop';\nimport { A } from '@ember/array';\n\nexport default class ClockcardComponent extends Component {\n    @service store;\n    @service session;\n    @service evented;\n    @service('collector-service') collector;\n    @service() notifications;\n    @service intl;\n    @service error;\n    @service('gps2') gps;\n    @service dialogs;\n    @service router;\n    @service analytics;\n\n    @tracked worktimes;\n    @tracked openWorktime;\n    @tracked newWorktime;\n    @tracked showNext;\n    @tracked promise;\n    @tracked showEdit = false;\n    @tracked nextContainerOnTop;\n    @tracked siteTooFar;\n    @tracked descriptionTooLong;\n    @tracked loading;\n    @tracked saving = false;\n    @tracked saveAction;\n    @tracked overRideEditModalTitle = false;\n\n    get styleNamespace() {\n        return podNames['clockcard'];\n    }\n\n    get workHoursToday() {\n        if (!this.worktimes) return '';\n        return this.worktimes.reduce((total, worktime) => total + (worktime.work_hours || 0), 0);\n    }\n    get startTimeToday() {\n        if (!this.worktimes) return '';\n        // sort worktimes by starttime and return first starttime\n        return this.worktimes.filter((worktime) => worktime.starttime).sortBy('starttime')\n            .firstObject?.starttime;\n    }\n    get pauseToday() {\n        if (!this.worktimes) return '';\n        // Manual pause: only add pauses for worktimes which have work_hours so it doesn't add currently running worktime's default pause\n        // Multipause: use pause field normally, because multipauses are added during the open worktime\n        const worktimes = this.collector.testNeeds(['products.multipause'])\n            ? this.worktimes\n            : this.worktimes.filter((worktime) => worktime.work_hours);\n        return worktimes.reduce((total, worktime) => total + (worktime.pause / 60 || 0), 0);\n    }\n\n    get timer() {\n        if (!this.openWorktime) return null;\n\n        // on first minute seconds should start from current seconds so counter starts from 00:00:00\n        const seconds =\n            this.openWorktime.starttime === moment().format('HH:mm') ? moment().format('ss') : '00';\n        return (\n            moment(this.openWorktime.date + ' ' + this.openWorktime.starttime).format(\n                'YYYY-MM-DD HH:mm:',\n            ) + seconds\n        );\n    }\n\n    get openPause() {\n        if (!this.openWorktime?.multipause) return null;\n\n        const pausesWithoutEnd = this.openWorktime.multipause.filter(\n            (pause) => pause.start && !pause.end,\n        );\n\n        return pausesWithoutEnd?.firstObject;\n    }\n\n    get pauseTimer() {\n        if (!this.openPause) return null;\n\n        // on first minute seconds should start from current seconds so counter starts from 00:00:00\n        const seconds =\n            this.openPause.start === moment().format('HH:mm') ? moment().format('ss') : '00';\n        return (\n            moment(this.openPause.date + ' ' + this.openPause.start).format('YYYY-MM-DD HH:mm:') +\n            seconds\n        );\n    }\n\n    // select fields that are shown on timecard start\n    // filter fields that are alwaysVisible or mandatory but not in newerShow\n    // show fields that have show_field_on_clockcard_start feature\n    // return as string ie \"field1,field2\"\n    get showFieldsOnStart() {\n        const neverShow = ['user', 'date', 'starttime', 'endtime', 'location', 'description'];\n        const neverShowType = ['databasearray'];\n        const neverShowFeature = ['hide_field_on_clockcard_start']; // fields with this feature are hidden on clockcard start\n\n        const fields = this.collector.fieldArray('worktime').filter((field) => {\n            const hasDesiredFeature = field.features.mandatory || field.features.show_field_on_clockcard_start;\n            return (\n                !neverShowType.includes(field.type) &&\n                hasDesiredFeature &&\n                !neverShow.includes(field.name) &&\n                !neverShowFeature.some((feature) => field.features[feature])\n            );\n        });\n\n        return fields.mapBy('name').join(',');\n    }\n\n    get showFieldsOnEdit() {\n        const neverShow = ['user', 'date', 'starttime', 'endtime', 'location'];\n        const fields = this.collector.fieldArray('worktime').filter((field) => {\n            return !neverShow.includes(field.name);\n        });\n\n        return fields.mapBy('name').join(',');\n    }\n\n    constructor() {\n        super(...arguments);\n        // clean new worktimes that are not saved, to prevent issue where endtime is taken from worktime form, causing an imediate save\n        this.cleanNewWorktimes();\n\n        if (\n            this.collector.testNeedsOne('products.gps_force') ||\n            this.collector.testNeedsOne('products.gps')\n        ) {\n            // if gps2 service is not started yet, start it now (this is needed because database-gps-force-field doesn't start it automatically for userlevel != 1)\n            // gps2 service has a check so that it cannot be started twice\n            this.gps.start();\n            this.siteTooFar = true;\n        }\n\n        // eslint-disable-next-line ember/named-functions-in-promises\n        this.getWorktimes().then(() => {\n            this.setMySite(); // Check if this.newWorktime and session.currentMySite exist and if so, set this.newWorktime.project to session.currentMySite\n        });\n\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumeEvent');\n        this.evented.on('gpsLockedPositionChanged', this, 'checkIfSiteTooFar');\n\n        this.router.on('routeWillChange', (transition) => {\n            if (!transition.to.find((route) => route.name === this.routeName)) {\n                this.newWorktime?.rollbackAttributes();\n                this.openWorktime?.rollbackAttributes();\n            }\n        });\n        // Validate all except databasearrays and fields with hide_field_on_clockcard_start feature, \n        // because they are hidden from start component regardless of being mandatory\n        // used in worktime start validation\n        this.fields = this.collector.fieldArray('worktime');\n        this.validateFields = this.fields\n            .filter((field) => \n                field.type !== 'databasearray' && \n                field.name !== 'description' &&\n                !field.features?.hide_field_on_clockcard_start\n            )\n            .mapBy('name');\n    }\n\n    cleanNewWorktimes() {\n        const newWorktimes = this.store.peekAll('worktime').filterBy('isNew', true);\n        newWorktimes.forEach((worktime) => worktime.destroyRecord());\n    }\n\n    setMySite() {\n        if (this.newWorktime && this.session && this.session.currentUser.currentMySite) {\n            this.newWorktime.project = this.session.currentUser.currentMySite;\n        }\n    }\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumeEvent');\n        this.evented.off('gpsLockedPositionChanged', this, 'checkIfSiteTooFar');\n    }\n\n    @action\n    async start() {\n        if (this.saving) return;\n        this.saving = true;\n\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Start worktime' });\n\n        // Do all validation before UI updates\n        const worktime = this.newWorktime?.isDeleted\n            ? this.collector.copyRecord(this.newWorktime)\n            : this.newWorktime;\n        worktime.date = moment().format('YYYY-MM-DD');\n        if (!worktime.user) worktime.user = this.session.currentUser;\n\n        worktime.starttime = moment().format('HH:mm');\n        if ('location' in worktime) worktime.location = await this.getLocation();\n\n        await worktime.validate(this.validateFields);\n        if (!worktime.isValid) {\n            this.saving = false;\n            return;\n        }\n\n        await this.checkIfSiteTooFar();\n        if (this.siteTooFar) {\n            worktime.starttime = null;\n            this.saving = false;\n            return;\n        }\n\n        // Save first\n        try {\n            worktime.validation = 'off';\n            await worktime.save();\n\n            // Only update UI after successful save\n            this.openWorktime = worktime;\n            this.newWorktime = worktime;\n            this.updateWorktimes();\n\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', this.openWorktime);\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n            worktime.starttime = null;\n            this.newWorktime = worktime;\n            this.openWorktime = null;\n        } finally {\n            this.saving = false;\n        }\n    }\n\n    @action\n    async takeABreak() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Start break' });\n        let worktime = this.openWorktime;\n        this.loading = true;\n\n        let pauseParams = {\n            date: worktime.date,\n            start: moment().format('HH:mm'),\n            user: worktime.user,\n        };\n        const pauseRecord = await this.store.createRecord('multipause', pauseParams);\n\n        try {\n            await pauseRecord.save();\n            if (!worktime.multipause) worktime.multipause = A([]);\n            worktime.multipause.pushObject(pauseRecord);\n            await worktime.save();\n            this.openWorktime = worktime;\n            this.notifications.success(this.intl.t('general.pause_started'), { autoClear: true });\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n        } finally {\n            this.loading = false;\n        }\n    }\n\n    @action\n    async continueWork() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Stop break' });\n        this.loading = true;\n        let openPause = this.openPause;\n        let worktime = this.openWorktime;\n\n        openPause.end = moment().format('HH:mm');\n\n        try {\n            await openPause.save();\n            await worktime.save();\n            this.notifications.success(this.intl.t('general.pause_saved'), { autoClear: true });\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n        } finally {\n            this.loading = false;\n        }\n    }\n\n    @action\n    async cancelPause() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Cancel break' });\n        this.loading = true;\n        let openPause = this.openPause;\n        let worktime = this.openWorktime;\n        try {\n            worktime.multipause.removeObject(openPause);\n            await openPause.destroyRecord();\n            await worktime.save();\n            this.notifications.info(this.intl.t('general.pause_canceled'), { autoClear: true });\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n        } finally {\n            this.loading = false;\n        }\n    }\n\n    @action\n    async stop(enforce_forced = false) {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Stop worktime' });\n        if (this.siteTooFar) return;\n\n        const worktime = this.openWorktime;\n        await worktime.validate();\n\n        if (\n            !worktime.isValid ||\n            (enforce_forced && this.collector.testNeeds(['products.force_clockcard_dialog']))\n        ) {\n            this.saveAction = 'stop';\n            this.overRideEditModalTitle = this.intl.t('general.end_last_worktime');\n            return (this.showEdit = true);\n        }\n\n        worktime.endtime = moment().format('HH:mm');\n        if ('end_location' in worktime) worktime.end_location = await this.getLocation();\n        await this.checkIfSiteTooFar();\n        if (this.siteTooFar) {\n            return;\n        }\n        this.openWorktime = null;\n\n        this.updateWorktimes();\n        try {\n            await worktime.save();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', this.openWorktime);\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.error.notify(error);\n            worktime.endtime = null;\n            this.openWorktime = worktime;\n        }\n    }\n\n    // After clicking save in edit modal, determine next action based on saveAction\n    @action\n    async afterSave() {\n        switch (this.saveAction) {\n            case 'stop':\n                await this.stop();\n                break;\n            case 'startnext':\n                await this.startNext();\n                break;\n        }\n    }\n\n    @action\n    openEditModal() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Open edit modal' });\n        this.saveAction = null;\n        this.overRideEditModalTitle = this.intl.t('general.edit_worktime');\n        this.showEdit = true;\n    }\n\n    @action\n    async startNext() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Start next worktime' });\n        if (this.siteTooFar) return;\n\n        const oldWorktime = this.openWorktime;\n        const newWorktime = this.newWorktime;\n\n        await oldWorktime.validate();\n        await newWorktime.validate(this.validateFields);\n\n        if (!oldWorktime.isValid) {\n            this.showEdit = true;\n            this.saveAction = 'startnext';\n            return;\n        }\n\n        if (!newWorktime.isValid) return;\n\n        oldWorktime.endtime = moment().format('HH:mm');\n        if ('end_location' in oldWorktime) oldWorktime.end_location = await this.getLocation();\n        newWorktime.starttime = moment().format('HH:mm');\n\n        // hax to force render form again so new values of new record would be updated to fields... this wouldn't be needed\n        // if fields would support ddau better .. when ddau works change to one line \"this.openWorktime = newWorktime\"\n        this.openWorktime = null;\n        next(this, () => {\n            this.openWorktime = newWorktime;\n        });\n\n        this.newWorktime = this.createNewWorktime();\n\n        // hide next worktime component\n        this.closeNext();\n\n        this.updateWorktimes();\n\n        try {\n            newWorktime.validation = 'off';\n\n            await oldWorktime.save();\n            await newWorktime.save();\n\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', oldWorktime);\n        } catch (error) {\n            this.error.notify(error);\n            newWorktime.starttime = null;\n            oldWorktime.endtime = null;\n            this.newWorktime = newWorktime;\n            this.openWorktime = oldWorktime;\n\n            this.openNext(0);\n        }\n    }\n\n    @action\n    openNext(time = 301) {\n        this.showNext = true;\n        this.saveAction = null;\n\n        // animation takes 300ms so after that we change nextContainerOnTop to true witch makes removes stop div to hidden\n        // and makes startnew div to not absolute so it will change the size of the parent div\n        later(\n            this,\n            () => {\n                this.nextContainerOnTop = true;\n                // if force_clockcard_dialog is on, show edit modal when we are opening \"next worktime\"-page\n                if (this.collector.testNeeds(['products.force_clockcard_dialog'])) {\n                    this.showEdit = true;\n                    this.overRideEditModalTitle = this.intl.t('general.edit_last_worktime');\n                }\n            },\n            time,\n        );\n    }\n\n    @action\n    closeNext() {\n        this.showNext = false;\n        this.nextContainerOnTop = false;\n    }\n\n    @action onFieldChange(type, field, value) {\n        value = value?.target ? value.target.value : value;\n        if (type === 'open') this.openWorktime[field] = value;\n        else if (type === 'new') this.newWorktime[field] = value;\n        if (field === 'description') {\n            this.descriptionTooLong =\n                value.length > 256 ? this.intl.t('validation.too_long_error') : null;\n        }\n        if (field === 'project') this.checkIfSiteTooFar();\n    }\n\n    @action\n    closeEdit(ExtraInfo) {\n        this.showEdit = false;\n        // Is needed so that default pause is not lost when worktime form is opened and closed :')\n        if (ExtraInfo !== 'AfterSave') this.setDefaultPause(this.openWorktime);\n    }\n\n    createNewWorktime() {\n        let defaults = { date: moment().format('YYYY-MM-DD'), user: this.session.currentUser };\n        if (this.collector.fieldExists('worktime', 'affects_overtime'))\n            defaults.affects_overtime = 'off';\n        return this.store.createRecord('worktime', defaults);\n    }\n\n    async dummy() {}\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') this.getWorktimes();\n    }\n\n    onResumeEvent(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        this.getWorktimes();\n    }\n\n    async getWorktimes() {\n        this.promise = this.store.query('worktime', {\n            date:\n                moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD'),\n            user: this.session.currentUser.id,\n            sideload: true,\n        });\n        // Have to load multipauses also to store so some data is not undefined 🥲\n        if (this.collector.testNeeds(['products.multipause']))\n            await this.store.query('multipause', {\n                date:\n                    moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n                user: this.session.currentUser.id,\n                sideload: true,\n            });\n\n        const worktimes = await this.promise;\n\n        this.updateWorktimes();\n\n        const openWorktime = worktimes.find((worktime) => {\n            return worktime.starttime && !worktime.endtime;\n        });\n\n        if (openWorktime) {\n            this.setDefaultPause(openWorktime);\n            this.openWorktime = openWorktime;\n            this.checkIfSiteTooFar();\n        } else this.openWorktime = null;\n    }\n\n    updateWorktimes() {\n        this.worktimes = this.store.peekAll('worktime').filter((worktime) => {\n            return (\n                worktime.date === moment().format('YYYY-MM-DD') &&\n                worktime.user == this.session.currentUser\n            );\n        });\n\n        const records = this.store.peekAll('worktime').filterBy('isNew', true);\n        if (records.length > 0) {\n            this.newWorktime = records.firstObject;\n            // when reusing unsaved worktime .. date must always be today so play starts worktime for today\n            this.newWorktime.date = moment().format('YYYY-MM-DD');\n            if (\n                this.collector.fieldExists('worktime', 'affects_overtime') &&\n                !this.newWorktime.affects_overtime\n            )\n                this.newWorktime.affects_overtime = 'off';\n        } else {\n            this.newWorktime = this.createNewWorktime();\n        }\n        this.checkIfSiteTooFar();\n    }\n\n    // check if pause is on .. and set pause for given worktime\n    setDefaultPause(worktime) {\n        const pauseField = this.collector\n            .fieldArray('worktime')\n            .find((item) => item.name === 'pause');\n        let pause = null;\n        // support for worktime-groups\n        if (pauseField) {\n            if (typeof get(pauseField, 'features.default_value') == 'object')\n                pause = get(pauseField, 'features.default_value.value');\n            else pause = get(pauseField, 'features.default_value');\n        }\n\n        if ((!worktime.pause || worktime.pause == null) && pause) worktime.pause = pause;\n        // Overwrite worktime default pause as null if worktime doesn't have any multipauses\n        // why: because multipauses are calculated in capi and setting default value is unnecessary and messes up pauseToday\n        if (worktime.multipause?.length === 0) worktime.pause = null;\n    }\n\n    async getLocation() {\n        if (this.gps.status != 'located') return null;\n\n        let location = {\n            latitude: await this.gps.lockedLatitude,\n            longitude: await this.gps.lockedLongitude,\n            accuracy: await this.gps.lockedAccuracy,\n        };\n\n        return JSON.stringify(location);\n    }\n\n    async checkIfSiteTooFar() {\n        if (!this.collector.fieldExists('project', 'force_location')) {\n            this.siteTooFar = false;\n            return;\n        }\n        if (!this.openWorktime) {\n            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        const narrow_widgets = this.widgets.filter((item) => !item.wide);\n        const slice_from = Math.floor(narrow_widgets.length / 2);\n\n        return {\n            left: narrow_widgets.slice(0, slice_from),\n            center: this.widgets.filter((item) => item.wide),\n            right: narrow_widgets.slice(slice_from, narrow_widgets.length),\n            mobile: this.widgets.filter((widget) => !widget.needs.includes('!mobileView')),\n        };\n    }),\n\n    isMobileOrEditingMobile: computed('dashboardView', function () {\n        return this.gui.isMobile() || this.dashboardView === 'mobile';\n    }),\n\n    projectField: computed('project', function () {\n        const form = this.Collector.fieldExists('worktime', 'project') ? 'worktime' : 'presence';\n        let field = this.collector.field(form, 'project');\n        if (field) {\n            field.prompt = 'general.all_projects';\n        }\n        return field;\n    }),\n\n    init() {\n        this._super(...arguments);\n        this.dashboardView = 'browser';\n        this.evented.on('onResumed', this, 'onResumed');\n        set(this, 'refreshTime', new Date()); // this is shown in template\n        if (!Ember.testing) later(this, this.autorefresh, 30 * 60 * 1000); // 30 minutes\n        this.doTheseBeforeRender();\n    },\n\n    didInsertElement() {\n        this.loadDashboard();\n    },\n\n    didDestroyElement() {\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    actions: {\n        projectFilterChange(project) {\n            this.analytics.trackEvent({ category: 'Dashboard', action: 'main project filter changed' });\n            set(this, 'project', project?.id);\n            this.evented.dashboardProjectChanged(project);\n        },\n\n        toggleEdit() {\n            this.toggleProperty('editingDashboard');\n            this.analytics.trackEvent({ category: 'Dashboard', action: 'edit-mode' });\n            window.Tt4.draggedWidgetType = null;\n            if (this.editingDashboard) {\n                set(this, 'gui.sidebar', false);\n            } else {\n                this.gui.resetSidebar();\n                this.send('changeView', 'browser'); //to load the correct view when exiting edit mode\n            }\n        },\n\n        async onremove(name) {\n            this.analytics.trackEvent({ category: 'Dashboard', action: `Widget removed: ${name}` });\n            let widgetStrings = this.moveWidgets(name);\n            await this.saveDashboard(widgetStrings);\n            this.evented.storeEvent('insert', 'dashboard', null);\n        },\n\n        widgetDropped(dropTargetName, dropWidgetName, event) {\n            this.analytics.trackEvent({ category: 'Dashboard', action: `Widget moved` });\n\n            const { y, height } = event.target.getBoundingClientRect();\n            // set(this, 'dragClass', 'active-down')\n            const dropPlacement =\n                event.originalEvent.pageY - window.scrollY < y + height / 2 ? 'above' : 'below';\n\n            let widgetStrings = this.moveWidgets(dropWidgetName, dropTargetName, dropPlacement);\n            this.saveDashboard(widgetStrings);\n        },\n\n        async changeView(view) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Edit view changed to ${view}`,\n            });\n            set(this, 'dashboardView', view);\n            set(this, 'loading', true);\n            await this.loadDashboard();\n            set(this, 'loading', false);\n        },\n\n        refresh() {\n            this.analytics.trackEvent({ category: 'Dashboard', action: 'Refresh' });\n            // prevent fast clicking\n            debounce(this, this.refreshDebounce, 1000, true);\n        },\n        async moveWidget(widget, direction) {\n            this.disableScrolling(); // we have to disable scrolling because if we unshift objects to the top of the array the page jumps to the top without smooth scrolling\n\n            let widgets = this.widget_columns.mobile;\n            let currentWidget = widgets.findBy('name', widget.name);\n            let currentIndex = widgets.indexOf(currentWidget);\n\n            if (direction == 'up' && currentIndex - 1 >= 0) {\n                widgets.removeObject(currentWidget);\n                widgets.insertAt(currentIndex - 1, currentWidget);\n            } else if (direction == 'down' && currentIndex + 1 < widgets.length) {\n                widgets.removeObject(currentWidget);\n                widgets.insertAt(currentIndex + 1, currentWidget);\n            } else if (direction == 'bottom') {\n                widgets.removeObject(currentWidget);\n                widgets.pushObject(currentWidget);\n            } else if (direction == 'top') {\n                widgets.removeObject(currentWidget);\n                widgets.unshiftObject(currentWidget);\n            }\n\n            let widgetNames = widgets.reduce((acc, widget) => {\n                acc.push(widget.name);\n                return acc;\n            }, []);\n\n            this.saveDashboard({ mobile: widgetNames.join() });\n\n            next(this, () => {\n                this.enableScrolling(); // we can enable scrolling once again so we can smoothly scroll to correct position\n                this.evented.storeEvent('insert', 'dashboard', null);\n                let element = document.querySelector(\"[data-name='\" + widget.name + \"']\");\n                element.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n            });\n        },\n\n        async addWidget(widget) {\n            let widgets = this.widget_columns.mobile;\n            let widgetNames = widgets.reduce((acc, widget) => {\n                acc.push(widget.name);\n                return acc;\n            }, []);\n            widgetNames.unshiftObject(widget.name);\n            await this.saveDashboard({ mobile: widgetNames.join() });\n            this.evented.storeEvent('insert', 'dashboard', null);\n        },\n    },\n\n    async doTheseBeforeRender() {\n        set(this, 'loading', true);\n\n        //check if 'user has saldo on' info is not found form localstorage or if userSettings has different value than localstorage\n        //if so, refresh userSettings\n        //why? because first time user logs in dashboard is rendered before user-settings service has checked if user has saldos\n        if (this.localstorage.getItem('saldosOn') === null || (this.userSettings.hasSaldos != this.localstorage.getItem('saldosOn'))) {\n            await this.userSettings.setUserSettings();\n        }\n\n        set(this, 'loading', false);\n    },\n\n    refreshDebounce() {\n        get(this, 'evented').resumed({ force: true });\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n\n        set(this, 'refreshTime', new Date()); // this is shown in template\n    },\n\n    autorefresh() {\n        if (this.isDestroyed) return;\n\n        // stop autorefreshing after 3 days .. just for case\n        if (get(this, 'evented').getOntime() > 3 * 24 * 3600) return;\n\n        get(this, 'evented').resumed({ force: true });\n        later(this, this.autorefresh, 30 * 60 * 1000); // 30 minutes\n    },\n\n    async loadDashboard() {\n        let dashboards;\n        try {\n            dashboards = this.isMobileOrEditingMobile\n                ? await this.store.query('dashboard-mobile', {})\n                : await this.store.query('dashboard', {});\n        } catch (error) {\n            // no need for actions .. we just use what is in ls\n            return;\n        }\n\n        if (this.isMobileOrEditingMobile) {\n            // dashboard is different in database and localstorage .. update localstorage and inform widget_columns to reload\n            if (\n                JSON.stringify(this.localstorage.getItem('dashboard-mobile')) !==\n                JSON.stringify(get(dashboards, 'firstObject') || null)\n            ) {\n                if (get(dashboards, 'firstObject'))\n                    this.localstorage.setItem('dashboard-mobile', get(dashboards, 'firstObject'));\n                else this.localstorage.removeItem('dashboard-mobile');\n            }\n        } else {\n            // dashboard is different in database and localstorage .. update localstorage and inform widget_columns to reload\n            if (\n                JSON.stringify(this.localstorage.getItem('dashboard')) !==\n                JSON.stringify(get(dashboards, 'firstObject') || null)\n            ) {\n                if (get(dashboards, 'firstObject'))\n                    this.localstorage.setItem('dashboard', get(dashboards, 'firstObject'));\n                else this.localstorage.removeItem('dashboard');\n            }\n        }\n        this.notifyPropertyChange('widget_columns');\n    },\n\n    async saveDashboard(dashboard) {\n        this.isMobileOrEditingMobile\n            ? this.localstorage.setItem('dashboard-mobile', dashboard)\n            : this.localstorage.setItem('dashboard', dashboard);\n        this.notifyPropertyChange('widget_columns');\n        const storeDashboards = this.isMobileOrEditingMobile\n            ? this.store.peekAll('dashboard-mobile')\n            : this.store.peekAll('dashboard');\n        let storeBoard = '';\n        if (get(storeDashboards, 'length') > 0) {\n            storeBoard = get(storeDashboards, 'firstObject');\n        } else {\n            storeBoard = this.isMobileOrEditingMobile\n                ? this.store.createRecord('dashboard-mobile', dashboard)\n                : this.store.createRecord('dashboard', dashboard);\n        }\n        setProperties(storeBoard, dashboard);\n        return storeBoard.save();\n    },\n\n    moveWidgets(move, moveAt = false, dropPlacement) {\n        let lsWidgets = this.localstorage.getItem('dashboard');\n        let mobileLsWidgets = this.localstorage.getItem('dashboard-mobile');\n        let widgets = {};\n        if (this.isMobileOrEditingMobile && mobileLsWidgets) {\n            widgets = {\n                mobile: this.mapWidgetsAndFilter(mobileLsWidgets.mobile),\n            };\n        } else if (!this.isMobileOrEditingMobile && lsWidgets) {\n            widgets = {\n                left: this.mapWidgetsAndFilter(lsWidgets.left),\n                center: this.mapWidgetsAndFilter(lsWidgets.center),\n                right: this.mapWidgetsAndFilter(lsWidgets.right),\n            };\n        } else {\n            widgets = this.default_widgets;\n        }\n\n        if (this.isMobileOrEditingMobile)\n            return {\n                mobile: this.mapWidgetsToString(\n                    widgets.mobile,\n                    move,\n                    moveAt,\n                    'mobile',\n                    dropPlacement,\n                ),\n            };\n        return {\n            left: this.mapWidgetsToString(widgets.left, move, moveAt, 'left', dropPlacement),\n            center: this.mapWidgetsToString(widgets.center, move, moveAt, 'center', dropPlacement),\n            right: this.mapWidgetsToString(widgets.right, move, moveAt, 'right', dropPlacement),\n        };\n    },\n\n    mapWidgetsToString(widgets, move, moveAt, column, dropPlacement) {\n        let widgetNames = widgets.map((item) => item.name);\n        if (moveAt === column) {\n            if (widgetNames.includes(move)) {\n                widgetNames = widgetNames.filter((item) => item !== move);\n            }\n            widgetNames.push(move);\n            return widgetNames.join(',');\n        }\n\n        let indexMove = widgetNames.indexOf(move);\n        if (indexMove > -1) {\n            widgetNames.splice(indexMove, 1);\n        }\n\n        let index1 = widgetNames.indexOf(moveAt);\n        if (index1 > -1) {\n            if (dropPlacement === 'above') {\n                widgetNames.splice(index1, 0, move);\n            } else {\n                widgetNames.splice(index1 + 1, 0, move);\n            }\n        }\n\n        return widgetNames.join(',');\n    },\n\n    mapWidgetsAndFilter(str) {\n        if (!str) return [];\n        return str\n            .split(',')\n            .map((name) => this.widgets.find((item) => item.name === name))\n            .filter((item) => item);\n    },\n\n    disableScrolling() {\n        var x = window.scrollX;\n        var y = window.scrollY;\n        window.onscroll = function () {\n            window.scrollTo(x, y);\n        };\n    },\n    enableScrolling() {\n        window.onscroll = function () {};\n    },\n    position(index, count) {\n        if (index === 0) return 'top';\n        if (index === count - 1) return 'bottom';\n        return 'center';\n    },\n});\n","import Component from '@ember/component';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    classNameBindings: ['dragClass'],\n    dragClass: 'inactive',\n\n    dragLeave(event) {\n        event.preventDefault();\n        set(this, 'dragClass', 'inactive');\n    },\n\n    dragOver(event) {\n        event.preventDefault();\n        set(this, 'dragClass', 'active');\n    },\n\n    dragEnter(event) {\n        event.preventDefault();\n    },\n\n    drop(event) {\n        set(this, 'dragClass', 'inactive');\n\n        const data = event.dataTransfer.getData('text/data');\n        if (!data) return;\n        this.dropped(this.name, data, event);\n    },\n});\n","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport pdfExport from 'tt4/mixins/pdf-export';\n\nexport default Component.extend(pdfExport, {\n    intl: service(),\n    cordova: service('own-cordova-service'),\n    error: service(),\n\n    actions: {\n        async exportPdf() {\n            set(this, 'showLoader', true);\n            try {\n                await this.createPdf('download');\n            } catch (error) {\n                this.error.notify(error);\n            } finally {\n                set(this, 'showLoader', false);\n            }\n        },\n    },\n\n    async createPdf(mode = 'download') {\n        let showColumns = this.headers;\n        let element = await this.createPdfTableElement(\n            showColumns,\n            this.data,\n            this.translated_headers,\n        );\n        let elements = [element];\n        let file = await this.createPdfFromElements(elements, mode, '', 8);\n\n        if (window.cordova) {\n            this.cordova.openFile(file, 'application/pdf');\n        }\n        return file;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"sxRSo1Ut\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"export_button\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/export/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nexport default class GanttComponent extends Component {\n    get styleNamespace() {\n        return podNames['dash-board/gantt'];\n    }\n\n    get dates() {\n        const [start, end] = this.args.range.split('_');\n        let dates = [];\n        let date = start;\n        while (moment(date) < moment(end)) {\n            dates = [...dates, date];\n            date = moment(date).add(1, 'days');\n        }\n        dates = [...dates, moment(end)];\n        return dates;\n    }\n\n    get hideHeaders() {\n        let containerWidth = document.getElementsByClassName('data-container')[0].offsetWidth;\n        return (this.dates.length >= 14 && containerWidth < 320) || this.dates.length > 14\n            ? true\n            : false;\n    }\n}\n","import Component from '@glimmer/component';\nimport { get } from '@ember/object';\n\nexport default class RowCellComponent extends Component {\n    get isWeekend() {\n        const weekday = moment(this.args.date).format('d');\n        if (weekday == 0 || weekday == 6) return true;\n        return false;\n    }\n\n    get colorString() {\n        let row = this.args.row.firstObject;\n        let string = this.args.colorFields.reduce((acc, current) => {\n            acc += get(row, current);\n            return acc;\n        }, '');\n\n        return string;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"FRcCvzHJ\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"@row\\\",\\\"@popupFields\\\",\\\"@hideHeaders\\\"],\\\"statements\\\":[[7,\\\"td\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"isWeekend\\\"]],\\\"weekend\\\"],null],\\\" \\\",[28,\\\"if\\\",[[23,4,[]],\\\"hideHeaders\\\"],null]]]],[11,\\\"style\\\",[28,\\\"if\\\",[[23,2,[]],[28,\\\"concat\\\",[\\\"background-color:\\\",[28,\\\"randomize-color\\\",[[24,[\\\"colorString\\\"]]],null]],null]],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@delay\\\",\\\"@tooltipClass\\\",\\\"@side\\\"],[\\\"400\\\",\\\"help-tooltip\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"get\\\",[[23,2,[\\\"firstObject\\\"]],[28,\\\"concat\\\",[[23,1,[]]],null]],null],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/gantt/row-cell/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"zkY2ABuT\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"columndate\\\",\\\"date\\\",\\\"@colorFields\\\",\\\"@popupFields\\\",\\\"@data\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"data-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"th\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"hideHeaders\\\"]],\\\"hideHeaders\\\"],null]]]],[8],[1,[28,\\\"moment-format\\\",[[23,3,[]],\\\"D.M\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"dash-board/gantt/row-cell\\\",[],[[\\\"@date\\\",\\\"@row\\\",\\\"@colorFields\\\",\\\"@hideHeaders\\\",\\\"@popupFields\\\"],[[23,2,[]],[28,\\\"get\\\",[[23,1,[\\\"rows\\\"]],[28,\\\"moment-format\\\",[[23,2,[]],\\\"YYYY-MM-DD\\\"],null]],null],[23,4,[]],[23,0,[\\\"hideHeaders\\\"]],[23,5,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"mainHeader\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-data\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"icon move move-Search\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no-content\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/gantt/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    flags: service(),\n    classNames: ['widget-library'],\n    classNameBindings: ['nonFixedMode:non-fixed-mode'],\n    // if flag 'top-header-menu' is true then we add non-fixed-mode class to the component\n    nonFixedMode: computed(function () {\n        return this.flags.test('top-header-menu');\n    }),\n});\n","import Component from '@ember/component';\nimport { get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default Component.extend({\n    classNames: ['widget-thumbnail'],\n    attributeBindings: ['draggable', 'data-name'],\n    draggable: true,\n    'data-name': alias('widget.name'),\n    dragStart(event) {\n        event.dataTransfer.setData('text/data', get(this, 'widget.name'));\n        window.Tt4.draggedWidgetType = 'widgetIcon';\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"WZ+en7XU\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"p\\\",true],[8],[1,[24,[\\\"widget\\\",\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"icon move move-\\\",[24,[\\\"widget\\\",\\\"icon\\\"]]]]],[8],[9],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/library/library-widget/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"cDC5Oz4a\",\"block\":\"{\\\"symbols\\\":[\\\"widget\\\",\\\"widget\\\",\\\"@addWidget\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"dashboard.widget_library.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widgets\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"dash-board/library/library-widget\\\",null,[[\\\"widget\\\"],[[23,2,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\" \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"mobile-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"dashboard.widget_library.title\\\"],null],false],[9],[0,\\\"\\\\n \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mobile-widgets-library\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"widgets\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"widgets\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,3,[]],[23,1,[]]],null]]],[8],[1,[28,\\\"dash-board/library/library-widget\\\",null,[[\\\"widget\\\"],[[23,1,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-library\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-EmptyBox\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"all-widgets-added-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"dashboard.widget_library.all_widgets_added\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/library/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    intl: service(),\n\n    translated_headers: computed(function () {\n        let headers = get(this, 'headers');\n        return headers.map((header) =>\n            this.intl.t('widget.' + get(this, 'form') + '.table-header.' + header),\n        );\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"HzFS4fZZ\",\"block\":\"{\\\"symbols\\\":[\\\"rowData\\\",\\\"row\\\",\\\"header\\\",\\\"translated_header\\\",\\\"@rowClicked\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"translated_headers\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"th\\\",true],[8],[1,[23,4,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"await\\\",[[24,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[11,\\\"onclick\\\",[28,\\\"if\\\",[[23,5,[]],[28,\\\"fn\\\",[[23,5,[]],[23,2,[]]],null]],null]],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,2,[\\\"class\\\"]],[23,2,[\\\"class\\\"]]],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"headers\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"status\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null],\\\"open\\\"],null],\\\"open-status\\\",\\\"approved-status\\\"],null]],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.\\\",[24,[\\\"form\\\"]],\\\".status.\\\",[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null],[28,\\\"format-hours\\\",[[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null],false],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[11,\\\"colspan\\\",[23,0,[\\\"headers\\\",\\\"length\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"general.no_rows_found\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/table/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"dR/UYuov\",\"block\":\"{\\\"symbols\\\":[\\\"widget\\\",\\\"widget\\\",\\\"widget\\\",\\\"widget\\\",\\\"index\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"buttons flex-column align-center pt-3\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"btn btn-xs btn-secondary dashboard-top-button\\\",[28,\\\"hash\\\",null,[[\\\"wizard\\\"],[\\\"dashboard-info-wizard\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"dashboard.show_info\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-xs btn-secondary dashboard-top-button\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleEdit\\\"],null]],[8],[4,\\\"if\\\",[[24,[\\\"editingDashboard\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"dashboard.edit_mode_off\\\"],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"dashboard.edit_mode_on\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"editingDashboard\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"radio-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"browser\\\",[24,[\\\"dashboardView\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeView\\\",\\\"browser\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"dashboard.edit_mode_browser\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"mobile\\\",[24,[\\\"dashboardView\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeView\\\",\\\"mobile\\\"],null]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[\\\"dashboard.edit_mode_mobile\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"refresh\\\"],null]],[10,\\\"class\\\",\\\"btn btn-secondary refresh\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-refresh\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pl-3\\\"],[8],[1,[28,\\\"t\\\",[\\\"dashboard.last_refresh\\\"],[[\\\"time\\\"],[[28,\\\"moment-format\\\",[[24,[\\\"refreshTime\\\"]],\\\"HH:mm:ss\\\"],null]]]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime||presence\\\",\\\"!userlevel=1\\\",\\\"flag.dashboard-project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pl-3\\\"],[8],[1,[28,\\\"collector/field-comp\\\",[[23,0,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"value\\\",\\\"usePowerDropdown\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"projectFilterChange\\\"],null],[24,[\\\"project\\\"]],true]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"dashboard-container \\\",[28,\\\"if\\\",[[24,[\\\"editingDashboard\\\"]],[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"dashboardView\\\"]],\\\"browser\\\"],null],\\\"edit-mode-br\\\",\\\"edit-mode-mb\\\"],null]],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editingDashboard\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"dashboard-widget-library-container \\\",[28,\\\"unless\\\",[[28,\\\"flag\\\",[\\\"top-header-menu\\\"],null],\\\"dashboard-widget-library-absolute-position\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"dash-board/library\\\",null,[[\\\"widgets\\\",\\\"isMobile\\\",\\\"addWidget\\\",\\\"libraryUpdated\\\"],[[24,[\\\"hidden_widgets\\\"]],[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addWidget\\\"],null],[24,[\\\"libraryUpdated\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dashboard-widgets-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isMobileOrEditingMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widget_columns\\\",\\\"mobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[\\\"dash-board/widgets/\\\",[23,4,[\\\"name\\\"]]],null]],[[\\\"onremove\\\",\\\"dropped\\\",\\\"name\\\",\\\"editing\\\",\\\"icon\\\",\\\"header\\\",\\\"position\\\",\\\"moveWidget\\\",\\\"project\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"onremove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null],[23,4,[\\\"name\\\"]],[24,[\\\"editingDashboard\\\"]],[23,4,[\\\"icon\\\"]],[23,4,[\\\"header\\\"]],[28,\\\"call\\\",[[28,\\\"fn\\\",[[23,0,[\\\"position\\\"]],[23,5,[]],[24,[\\\"widget_columns\\\",\\\"mobile\\\",\\\"length\\\"]]],null]],null],[28,\\\"action\\\",[[23,0,[]],\\\"moveWidget\\\"],null],[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4,5]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"dash-board/empty-drop-zone\\\",null,[[\\\"name\\\",\\\"dropped\\\"],[\\\"mobile\\\",[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column left-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widget_columns\\\",\\\"left\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[\\\"dash-board/widgets/\\\",[23,3,[\\\"name\\\"]]],null]],[[\\\"onremove\\\",\\\"dropped\\\",\\\"name\\\",\\\"editing\\\",\\\"icon\\\",\\\"header\\\",\\\"project\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"onremove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null],[23,3,[\\\"name\\\"]],[24,[\\\"editingDashboard\\\"]],[23,3,[\\\"icon\\\"]],[23,3,[\\\"header\\\"]],[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"dash-board/empty-drop-zone\\\",null,[[\\\"name\\\",\\\"dropped\\\"],[\\\"left\\\",[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column center-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widget_columns\\\",\\\"center\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[\\\"dash-board/widgets/\\\",[23,2,[\\\"name\\\"]]],null]],[[\\\"onremove\\\",\\\"dropped\\\",\\\"name\\\",\\\"editing\\\",\\\"icon\\\",\\\"header\\\",\\\"project\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"onremove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null],[23,2,[\\\"name\\\"]],[24,[\\\"editingDashboard\\\"]],[23,2,[\\\"icon\\\"]],[23,2,[\\\"header\\\"]],[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"dash-board/empty-drop-zone\\\",null,[[\\\"name\\\",\\\"dropped\\\"],[\\\"center\\\",[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column right-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widget_columns\\\",\\\"right\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[\\\"dash-board/widgets/\\\",[23,1,[\\\"name\\\"]]],null]],[[\\\"onremove\\\",\\\"dropped\\\",\\\"name\\\",\\\"editing\\\",\\\"icon\\\",\\\"header\\\",\\\"project\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"onremove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null],[23,1,[\\\"name\\\"]],[24,[\\\"editingDashboard\\\"]],[23,1,[\\\"icon\\\"]],[23,1,[\\\"header\\\"]],[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"dash-board/empty-drop-zone\\\",null,[[\\\"name\\\",\\\"dropped\\\"],[\\\"right\\\",[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\n\n/*\nShow skeleton component on widget first load, and normal loader on subsequent loads\nJust dump this component in the first line of the widget's template\n\n{{dash-board/widget-spinner promise=promise skeletonRows=<number>}}\n\nIf you have more than one promise use the promise-all helper\n{{dash-board/widget-spinner promise=(promise-all promise1 promise2 promise3)}}\n\n*/\n\nexport default Component.extend({\n    skeletonRows: 4,\n    firstLoad: true,\n\n    async didUpdateAttrs() {\n        if (!get(this, 'firstLoad')) return;\n        try {\n            await get(this, 'promise');\n            set(this, 'firstLoad', false);\n        } catch (e) {\n            set(this, 'firstLoad', false);\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ia5qbe6k\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"promise\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"firstLoad\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"skeleton-component\\\",[],[[\\\"@rows\\\",\\\"@loader\\\"],[[22,\\\"skeletonRows\\\"],true]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"loader-icon\\\",[],[[\\\"@class\\\"],[\\\"component_overlay_loader\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widget-spinner/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n\n    init() {\n        this._super(...arguments);\n        this.headers = ['date', 'absencetype', 'status'];\n        this.form = 'absence';\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'data', this.getAbsences());\n    },\n\n    didDestroyElement() {\n        this._super(...arguments);\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'abcense') set(this, 'data', this.getAbsences());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'data', this.getAbsences());\n    },\n\n    async getAbsences() {\n        if (!this.Collector.testNeedsOne('abcense')) return [];\n        let absences = await this.store.query('abcense', {\n            startdate_enddate:\n                moment().format('YYYY-MM-DD') + '_' + moment().add(2, 'years').format('YYYY-MM-DD'),\n            order: 'startdate,enddate',\n            user: this.session.currentUser.id,\n            sideload: ['abcensetype.name'],\n        });\n        let arr = [];\n\n        absences.forEach((data) => {\n            let enddate =\n                data.startdate !== data.enddate ? ' - ' + moment(data.enddate).format('L') : '';\n            arr.pushObject({\n                date: moment(data.startdate).format('L') + enddate,\n                absencetype: data.abcensetype.name,\n                status: data.status,\n            });\n        });\n        return arr;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ZSY0Ys6/\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[24,[\\\"data\\\"]],3]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/table\\\",null,[[\\\"data\\\",\\\"headers\\\",\\\"form\\\"],[[24,[\\\"data\\\"]],[24,[\\\"headers\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/absence/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { action, set } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n\nexport default class AbsenteesComponent extends Component {\n    @service store;\n    @service intl;\n    @service('collector-service') Collector;\n    @service localstorage;\n    @service evented;\n    @service analytics;\n\n    @tracked data;\n    @tracked dateRange;\n    @tracked currentSalaryPeriod;\n    @tracked layout;\n    @tracked ganttData;\n    @tracked dateRanges;\n\n    get styleNamespace() {\n        return podNames['dash-board/widgets/absentees'];\n    }\n\n    get colorFields() {\n        return ['abcensetype.id'];\n    }\n\n    get popupFields() {\n        return ['dateRange', 'userName', 'absencetype', 'description'];\n    }\n\n    get absenceTypes() {\n        let field = this.Collector.field('abcense', 'abcensetype');\n        if (field) {\n            field.value = this.abcensetype;\n            field.prompt = 'general.all_absencetypes';\n        }\n        return field;\n    }\n\n    async getDateRanges() {\n        if (!this.currentSalaryPeriod) await this.setCurrentPeriod();\n        return [\n            {\n                key: 'this_week',\n                id:\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('isoWeek').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_week'),\n            },\n            {\n                key: 'this_and_next_week',\n                id:\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().add(1, 'week').endOf('isoWeek').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_and_next_week'),\n            },\n            {\n                key: 'this_month',\n                id:\n                    moment().startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('month').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_month'),\n            },\n            {\n                key: 'next_month',\n                id:\n                    moment().add(1, 'month').startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().add(1, 'month').endOf('month').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.next_month'),\n            },\n            {\n                key: 'this_salaryperiod',\n                id: this.currentSalaryPeriod,\n                name: this.intl.t('general.period.this_salaryperiod'),\n            },\n        ];\n    }\n\n    // Fetch absences for all users in batches\n    async fetchAllAbsencesInBatches() {\n        const allAbsences = [];\n        const limit = 100; // Fetch 100 records at a time\n        let offset = 0;\n        let hasMore = true;\n\n        while (hasMore) {\n            let batch = await this.store.query('abcense', {\n                startdate_enddate: this.dateRanges.filterBy('key', this.dateRange.key)[0]['id'],\n                order: 'startdate,enddate',\n                abcensetype: this.abcensetype,\n                sideload: true,\n                limit: limit,\n                offset: offset,\n            });\n\n            allAbsences.push(...batch.toArray());\n\n            if (batch.length < limit) {\n                hasMore = false;\n            } else {\n                offset += limit;\n            }\n        }\n\n        return allAbsences;\n    }\n\n    async getAbsences() {\n        if (!this.dateRanges) await this.setDateRanges();\n\n        const absences = await this.fetchAllAbsencesInBatches();\n        const formattedData = this.formatAbsences(absences);\n        this.ganttData = this.absencesByuser(formattedData);\n        return formattedData;\n    }\n\n    async setCurrentPeriod() {\n        let salaryPeriods = this.store.peekAll('wage-period');\n        if (isEmpty(salaryPeriods)) salaryPeriods = await this.store.findAll('wage-period');\n        if (isEmpty(salaryPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n\n        const currentDate = moment().format('YYYY-MM-DD');\n        const currentPeriods = salaryPeriods.filter((period) => {\n            return period.period_start_date <= currentDate && period.period_end_date >= currentDate;\n        });\n        if (isEmpty(currentPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n        // Just set first that is found\n        this.currentSalaryPeriod =\n            currentPeriods[0].period_start_date + '_' + currentPeriods[0].period_end_date;\n    }\n\n    constructor() {\n        super(...arguments);\n        this.data = this.getAbsences();\n        this.form = 'absence';\n        this.headers = ['userName', 'absencetype', 'start', 'end'];\n        this.layout = this.getFilter('absentee_widget_layout', 'table');\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    }\n\n    @action\n    filterchanged(value, field) {\n        if (field && typeof field === 'string') {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Change ${field}`,\n                label: 'Absentees widget',\n            });\n            if (!value) set(this, field, null);\n            else set(this, field, value.id);\n        }\n        this.data = this.getAbsences();\n    }\n\n    @action\n    changeDate(value) {\n        if (value) this.dateRange = value;\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: `Change date range`,\n            label: 'Absentees widget',\n        });\n        this.setFilterToLS('absentee_widget_filter', this.dateRange);\n        this.data = this.getAbsences();\n    }\n\n    @action\n    changeLayout(layout) {\n        this.layout = layout;\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: `Use ${layout} layout`,\n            label: 'Absentees widget',\n        });\n        this.setFilterToLS('absentee_widget_layout', layout);\n    }\n\n    async setDateRanges() {\n        this.dateRanges = await this.getDateRanges();\n        let lsRange = this.getFilter('absentee_widget_filter', this.dateRanges[0]);\n        if (!lsRange.key) this.dateRange = this.dateRanges[0];\n        else this.dateRange = lsRange;\n    }\n\n    setFilterToLS(key, filter) {\n        this.localstorage.setItem(key, filter);\n    }\n\n    getFilter(key, defaultValue) {\n        let LSFilter = this.localstorage.getItem(key);\n        return LSFilter ? LSFilter : defaultValue;\n    }\n\n    formatAbsences(absences) {\n        return absences.map((item) => {\n            set(item, 'start', moment(item.startdate).format('L'));\n            set(item, 'end', moment(item.enddate).format('L'));\n            set(\n                item,\n                'dateRange',\n                moment(item.startdate).format('DD.MM') +\n                    ' - ' +\n                    moment(item.enddate).format('DD.MM'),\n            );\n            set(item, 'absencetype', item.abcensetype.name);\n            set(item, 'userName', item.user.firstname + ' ' + item.user.lastname);\n            return item;\n        });\n    }\n\n    absencesByuser(absences) {\n        let users = absences.reduce((acc, item) => {\n            let arr = [...acc, item.user];\n            return [...new Set(arr)];\n        }, []);\n\n        return users.map((user) => {\n            let arr = [];\n            let rows = this.formatganttData(absences.filterBy('user.id', user.id));\n            arr.rows = rows;\n            arr.mainHeader = user.firstname + ' ' + user.lastname;\n            return arr;\n        });\n    }\n\n    formatganttData(rows) {\n        return rows.reduce((acc, item) => {\n            const date = item.startdate;\n            if (!acc[date]) acc[date] = [];\n\n            if (item.enddate) {\n                let i = 1;\n                const moment_date = moment(date);\n                const diff = moment(item.enddate).diff(moment_date, 'day');\n                acc[date].push(item);\n                while (i <= diff) {\n                    const new_date = moment_date.add(1, 'day').format('YYYY-MM-DD');\n                    if (!acc[new_date]) acc[new_date] = [];\n                    acc[new_date].push(item);\n                    i++;\n                }\n            } else {\n                acc[date].push(item);\n            }\n            return acc;\n        }, {});\n    }\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    }\n\n    onStoreEvent(params) {\n        if (params.type === 'abcense') this.data = this.getAbsences();\n    }\n\n    async onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        if (this.currentSalaryPeriod) {\n            // If dashboard is open for a long time, we have to update current period if its end date is past current date\n            const splitCurrent = this.currentSalaryPeriod.split('_');\n            if (splitCurrent[1] < moment().format('YYYY-MM-DD')) await this.setCurrentPeriod();\n        }\n        this.dateRanges = await this.getDateRanges();\n        if (this.dateRange.key) {\n            this.setFilterToLS(\n                'absentee_widget_filter',\n                this.dateRanges.filterBy('key', this.dateRange.key)[0],\n            );\n            this.dateRange = this.dateRanges.filterBy('key', this.dateRange.key)[0];\n        } else {\n            this.dateRange = this.dateRanges[0];\n        }\n        this.data = this.getAbsences();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"yKfax/G0\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@tableLayout\\\",\\\"@changeLayout\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,0,[\\\"layout\\\"]],[23,0,[\\\"changeLayout\\\"]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"data\\\"]],4]]],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"fixed-flex-filters\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\"],[[23,0,[\\\"absenceTypes\\\"]],[23,0,[\\\"filterchanged\\\"]],\\\"\\\"]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"power-select\\\",[],[[\\\"@selected\\\",\\\"@options\\\",\\\"@onChange\\\"],[[23,0,[\\\"dateRange\\\"]],[23,0,[\\\"dateRanges\\\"]],[23,0,[\\\"changeDate\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"layout\\\"]],\\\"grid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"dash-board/gantt\\\",[],[[\\\"@data\\\",\\\"@range\\\",\\\"@colorFields\\\",\\\"@popupFields\\\"],[[23,0,[\\\"ganttData\\\"]],[23,0,[\\\"dateRange\\\",\\\"id\\\"]],[23,0,[\\\"colorFields\\\"]],[23,0,[\\\"popupFields\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"dash-board/table\\\",[],[[\\\"@data\\\",\\\"@headers\\\",\\\"@form\\\"],[[23,0,[\\\"data\\\"]],[23,0,[\\\"headers\\\"]],[23,0,[\\\"form\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/absentees/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    intl: service(),\n    localstorage: service(),\n    router: service(),\n    collector: service('collector-service'),\n    notifications: service(),\n    analytics: service(),\n    user: null,\n    project: null,\n    worktimegroup: null,\n    showOkAlso: true,\n\n    tableLayout: computed(function () {\n        if (this.localstorage.getItem('anomalitywidget-layout')) {\n            return this.localstorage.getItem('anomalitywidget-layout');\n        } else {\n            return 'report';\n        }\n    }),\n\n    missingWorktimesPerUser: computed('anomalities', async function () {\n        const anomalities = this.anomalities.findBy('type', 'missing_worktimes');\n        let data = anomalities.data;\n        const userIds = this.unique(data.mapBy('user'));\n        const users = anomalities.users;\n        return userIds.map((userid) => {\n            const user = users.findBy('id', userid);\n            const missing_dates = data\n                .filter((item) => item.user === userid)\n                .map((item) => item.date + ' 00:00:00Z');\n            return {\n                userid: userid,\n                name: `${user.firstname} ${user.lastname}`,\n                missing_dates: missing_dates,\n                email: user.email,\n                phone: user.phone,\n            };\n        });\n    }),\n\n    saldo: computed('anomalities', function () {\n        return get(this, 'anomalities').findBy('type', 'saldo').data;\n    }),\n\n    taxman_errors: computed('anomalities', function () {\n        return get(this, 'anomalities').findBy('type', 'taxman_errors').data;\n    }),\n\n    init() {\n        this._super();\n        const promise = this.loadAnomalities();\n        set(this, 'promise', promise);\n\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n        this.evented.on('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n        this.evented.off('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    },\n\n    actions: {\n        /* general actions */\n        setEditableSetting(setting) {\n            set(this, 'showSettings', false);\n            set(this, 'currentSetting', setting);\n        },\n        closeCurrentSetting() {\n            set(this, 'showSettings', true);\n            set(this, 'currentSetting', false);\n        },\n        changeLayout(layout) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Use ${layout} layout`,\n                label: 'Anomalities widget',\n            });\n            this.localstorage.setItem('anomalitywidget-layout', layout);\n            //set(this,'tableLayout',layout)\n            this.notifyPropertyChange('tableLayout');\n        },\n        gotoAnomality(anomality) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Binoculars clicked for ${anomality.type}`,\n                label: 'Anomalities widget',\n            });\n            if (anomality.link) {\n                this.router.transitionTo(anomality.link.route, {\n                    queryParams: anomality.link.query_params,\n                });\n            } else {\n                set(this, 'showAnomality', anomality.type);\n                set(this, 'anomalityValue', anomality.value);\n            }\n        },\n\n        /* settings-actions */\n        async saveSettings() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Save settings',\n                label: 'Anomalities widget',\n            });\n            set(this, 'showSettings', false);\n            set(this, 'promise', this.saveSettingsAndReloadAnomalities());\n        },\n\n        closeSettings() {\n            set(this, 'showSettings', false);\n            set(this, 'promise', this.loadAnomalities());\n        },\n\n        /* missing-worktimes actions */\n        async toggleCheckAll(check) {\n            let data = await this.missingWorktimesPerUser;\n            data.map((row) => set(row, 'checked', check));\n        },\n        async toggleCheckRow(row) {\n            set(row, 'checked', row.checked ? false : true);\n\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Show ${row.type} set ${row.checked}`,\n                label: 'Anomalities widget',\n            });\n\n            let missingWorktimes = await this.missingWorktimesPerUser;\n            if (!missingWorktimes) return;\n            set(this, 'allRowsChecked', missingWorktimes.isEvery('checked', true));\n        },\n\n        async sendNotificationToCheckedUsers() {\n            let users = [...(await this.missingWorktimesPerUser)];\n            let sendTo = users.filter((user) => user.checked);\n            let sendBy = this.getSendBySetting('missing_worktimes', 'push');\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Send notification to selected users by ${sendBy}`,\n                label: 'Anomalities widget',\n            });\n            sendTo.forEach((user) => {\n                let content = this.getNoticeContent(user);\n                this.sendNotice(sendBy, user, content);\n            });\n        },\n\n        showSettings() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Open settings',\n                label: 'Anomalities widget',\n            });\n            set(this, 'showSettings', true);\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime' || params.type === 'abcense')\n            set(this, 'promise', this.loadAnomalities());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'promise', this.loadAnomalities());\n    },\n\n    getNoticeContent(user) {\n        let message = this.intl.t('widget.anomalities.missing-worktimes.noticeContent') + '\\n';\n        user.missing_dates.map((date) => (message += moment(date).format('DD.MM.') + ' '));\n        return message;\n    },\n\n    sendNotice(sendBy, user, content) {\n        let title = this.intl.t('widget.anomalities.missing-worktimes.noticeTitle');\n        switch (sendBy) {\n            case 'email':\n                if (user.email)\n                    return this.sender(\n                        'sendEmail',\n                        { email: user.email, title: title, content: content },\n                        user.name,\n                    );\n                return this.notifications.error(\n                    this.intl.t('widget.anomalities.missing-worktimes.noEmailAddress', {\n                        user: user.name,\n                    }),\n                    {\n                        autoClear: true,\n                    },\n                );\n\n            case 'sms':\n                if (user.phone)\n                    return this.sender(\n                        'sendSms',\n                        {\n                            phone: user.phone,\n                            messageid: 'anomalities_notice',\n                            language: moment.locale(),\n                            values: {\n                                days: user.missing_dates\n                                    .map((date) => moment(date).format('DD.MM.'))\n                                    .join(','),\n                            },\n                        },\n                        user.name,\n                    );\n                return this.notifications.error(\n                    this.intl.t('widget.anomalities.missing-worktimes.noPhone', {\n                        user: user.name,\n                    }),\n                    {\n                        autoClear: true,\n                    },\n                );\n\n            case 'push':\n                return this.sender(\n                    'push',\n                    { userids: JSON.stringify([user.userid]), title: title, message: content },\n                    user.name,\n                );\n        }\n    },\n    async sender(url, data, user) {\n        try {\n            await this.ttapi.request(url, {\n                dataType: 'text',\n                data: data,\n                method: 'post',\n            });\n        } catch (e) {\n            return this.notifications.error(e, { autoClear: true });\n        }\n        this.notifications.success(\n            this.intl.t('widget.anomalities.missing-worktimes.noticeSent', { user: user }),\n            {\n                autoClear: true,\n            },\n        );\n    },\n\n    async loadAnomalities() {\n        let c = this.collector;\n        const settings = await this.store.findAll('widget-anomalies-setting');\n\n        if (settings.findBy('name', 'show-ok'))\n            set(this, 'showOkAlso', settings.findBy('name', 'show-ok').value);\n\n        let arr = c.needsOfArray([\n            {\n                type: 'missing_worktimes',\n                needs: ['worktime'],\n                hasSettings: true,\n                checked: this.isChecked('missing_worktimes', settings),\n            },\n            {\n                type: 'saldo',\n                needs: ['products.saldo'],\n                checked: this.isChecked('saldo', settings),\n            },\n            {\n                type: 'ending_passes',\n                needs: ['products.orientations||products.orientations_new', 'orientation@access'],\n                hasSettings: true,\n                checked: this.isChecked('ending_passes', settings),\n                link: {\n                    route: 'orientations.passes',\n                    query_params: {\n                        order: 'pass_end-',\n                        'pass_end:pass_end': this.getDaterange('ending_passes'),\n                        'ori_site': this.project,\n                    },\n                },\n            },\n            {\n                type: 'unapproved_worktimes',\n                needs: ['worktime', 'worktime@access'],\n                hasSettings: true,\n                checked: this.isChecked('unapproved_worktimes', settings),\n                link: {\n                    route: 'timetracker.worktime-list',\n                    query_params: {\n                        date: this.getDaterange('unapproved_worktimes'),\n                        status: 'open',\n                        project: this.project,\n                    },\n                },\n            },\n            {\n                type: 'taxman_errors',\n                needs: [\n                    'export_taxman',\n                    '!userlevel=1?',\n                    'export_contact_person@access',\n                    'urakkaraportointi@access',\n                ],\n                checked: this.isChecked('taxman_errors', settings),\n            },\n            {\n                type: 'abcense',\n                needs: ['abcense'],\n                hasSettings: true,\n                checked: this.isChecked('abcense', settings),\n                link: {\n                    route: 'abcenses',\n                    query_params: { startdate: this.getDaterange('abcense'), status: 'open' },\n                },\n            },\n        ]);\n\n        const queryParams = ['show=' + arr.filterBy('checked', true).mapBy('type').join(',')];\n        if (arr.findBy('type', 'unapproved_worktimes'))\n            queryParams.push(\n                'unapproved_worktimes_date=' + this.getDaterange('unapproved_worktimes'),\n            );\n        if (arr.findBy('type', 'ending_passes'))\n            queryParams.push('ending_passes_date=' + this.getDaterange('ending_passes'));\n        if (arr.findBy('type', 'missing_worktimes')) {\n            queryParams.push('missing_worktimes_date=' + this.getDaterange('missing_worktimes'));\n            const setting = this.store\n                .peekAll('widget-anomalies-setting')\n                .findBy('name', 'missing_worktimes');\n            if (setting && setting.value.hideUserIds)\n                queryParams.push('missing_worktimes_hide=' + setting.value.hideUserIds.join(','));\n        }\n        if (arr.findBy('type', 'abcense'))\n            queryParams.push('abcense=' + this.getDaterange('abcense'));\n\n        if (this.project) queryParams.push('project=' + this.project);\n\n        set(this, 'anomalitiesSettings', arr);\n        // get values from backend\n        const response = await this.ttapi.request('api/anomalies?' + queryParams.join('&'));\n        for (let type in response) Object.assign(arr.findBy('type', type), response[type]);\n\n        set(this, 'anomalities', arr);\n    },\n\n    getDaterange(type) {\n        const setting = this.store.peekAll('widget-anomalies-setting').findBy('name', type);\n        const defaults = {\n            unapproved_worktimes: 7,\n            ending_passes: 7,\n            missing_worktimes: 'current_week',\n            abcense: 1,\n        };\n        const dateRange = setting ? setting.value.selectedDateRange : defaults[type];\n\n        if (type === 'ending_passes')\n            return (\n                moment().format('YYYY-MM-DD') +\n                '_' +\n                moment().add(dateRange, 'days').format('YYYY-MM-DD')\n            );\n        if (type === 'abcense')\n            return (\n                moment().subtract(3, 'month').format('YYYY-MM-DD') +\n                '_' +\n                moment().add(dateRange, 'months').format('YYYY-MM-DD')\n            );\n\n        if (dateRange === 'current_week')\n            return (\n                moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD')\n            );\n        if (dateRange === 'last_week')\n            return (\n                moment().startOf('isoWeek').subtract(1, 'week').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('isoWeek').subtract(1, 'week').format('YYYY-MM-DD')\n            );\n        if (dateRange === 'last_2_weeks')\n            return (\n                moment().startOf('isoWeek').subtract(2, 'week').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('isoWeek').subtract(1, 'week').format('YYYY-MM-DD')\n            );\n        if (dateRange === 'current_month')\n            return (\n                moment().startOf('month').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD')\n            );\n        if (dateRange === 'last_month')\n            return (\n                moment().subtract(1, 'month').startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().subtract(1, 'month').endOf('month').format('YYYY-MM-DD')\n            );\n\n        // default style is to calculate days backwards\n        return (\n            moment().subtract(dateRange, 'days').format('YYYY-MM-DD') +\n            '_' +\n            moment().format('YYYY-MM-DD')\n        );\n    },\n\n    getSendBySetting(type, defaultValue = null) {\n        const setting = this.store.peekAll('widget-anomalies-setting').findBy('name', type);\n        // if setting is never saved .. default to push\n        return setting ? setting.value.sendBy : defaultValue;\n    },\n\n    isChecked(name, settings) {\n        if (!settings.findBy('name', 'show-anomalies')) return true; // default is always on\n        return settings.findBy('name', 'show-anomalies').value.includes(name);\n    },\n\n    async saveSettingsAndReloadAnomalities() {\n        let record = this.store\n            .peekAll('widget-anomalies-setting')\n            .findBy('name', 'show-anomalies');\n        if (!record)\n            record = this.store.createRecord('widget-anomalies-setting', {\n                name: 'show-anomalies',\n            });\n        set(record, 'value', this.anomalitiesSettings.filterBy('checked', true).mapBy('type'));\n        await record.save();\n\n        let recordShowOk = this.store.peekAll('widget-anomalies-setting').findBy('name', 'show-ok');\n        if (!recordShowOk)\n            recordShowOk = this.store.createRecord('widget-anomalies-setting', { name: 'show-ok' });\n        set(recordShowOk, 'value', this.showOkAlso);\n        await recordShowOk.save();\n\n        await this.loadAnomalities();\n    },\n\n    unique(array) {\n        // https://stackoverflow.com/questions/1960473/get-all-unique-values-in-a-javascript-array-remove-duplicates\n        return [...new Set(array)];\n    },\n\n    dashboardProjectChanged(params) {\n        set(this, 'promise', this.loadAnomalities());\n        set(this, 'projectName', params.project?.name);\n    },\n});\n","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    error: service(),\n    intl: service(),\n    localstorage: service(),\n\n    init() {\n        this._super();\n        let forms = [];\n        if (this.Collector.testNeedsOne('worktime')) forms.push('worktime');\n        if (this.Collector.testNeedsOne('abcense')) forms.push('abcense');\n        this.forms = forms;\n        let own_settings = {}; //this.settings.findBy('type','missing_worktimes').settings;\n        if (!own_settings || !own_settings.unSelectedUsers) {\n            own_settings = { unSelectedUsers: [] };\n        }\n\n        set(this, 'own_settings', own_settings);\n        //set(this, 'settings', await this.data.settings);\n        //console.log(this.settings);\n    },\n\n    actions: {\n        check(row) {\n            this.toggleCheckRow(row);\n        },\n        checkAll() {\n            this.isChecked ? this.toggleCheckAll(false) : this.toggleCheckAll(true);\n            this.toggleProperty('isChecked');\n        },\n\n        sendNotificationToCheckedUsers() {\n            this.sendNotificationToCheckedUsers();\n        },\n        showAddModal(user, date) {\n            set(this, 'selectedUser', user);\n            set(this, 'selectedDate', date);\n            set(this, 'showAddModal', true);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"bjvMKM+J\",\"block\":\"{\\\"symbols\\\":[\\\"table\\\",\\\"user\\\",\\\"date\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"promise\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"centered-table\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"isChecked\\\"]],\\\"move move-CheckedCheckbox\\\",\\\"move move-UncheckedCheckbox\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"checkAll\\\"]],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.user\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.date\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"users\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"userid\\\"]],[24,[\\\"own_settings\\\",\\\"unSelectedUsers\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[23,2,[\\\"checked\\\"]],\\\"move move-CheckedCheckbox\\\",\\\"move move-UncheckedCheckbox\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\",[23,2,[]]]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[\\\"missing_dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"missing-day\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAddModal\\\",[23,2,[\\\"userid\\\"]],[23,3,[]]]],[8],[1,[28,\\\"moment-format\\\",[[23,3,[]],\\\"D.M.\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendNotificationToCheckedUsers\\\"]],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.send_to_selected\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[23,0,[\\\"showAddModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@header\\\",\\\"@close\\\"],[[28,\\\"moment-format\\\",[[23,0,[\\\"selectedDate\\\"]],\\\"dd DD[.]MM[.]\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showAddModal\\\"]]],[[\\\"value\\\"],[null]]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"workday-summary\\\",[],[[\\\"@user\\\",\\\"@day\\\",\\\"@date\\\",\\\"@addForms\\\",\\\"@autoclose\\\",\\\"@close\\\"],[[23,0,[\\\"selectedUser\\\"]],[28,\\\"moment-format\\\",[[23,0,[\\\"selectedDate\\\"]],\\\"YYYY-MM-DD\\\"],null],[23,0,[\\\"selectedDate\\\"]],[23,0,[\\\"forms\\\"]],true,[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showAddModal\\\"]]],[[\\\"value\\\"],[null]]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"edit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"add\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/missing-worktimes/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n\n    init() {\n        this._super();\n        this.load();\n    },\n\n    async load() {\n        await this.store.query('user', { id: this.data.mapBy('saldos.userid').join(','), limit: 'all' });\n\n        const over = [];\n        const under = [];\n        for (let row of this.data) {\n            const user = this.store.peekRecord('user', row.saldos.userid);\n            const add = {\n                name: `${user.firstname} ${user.lastname}`,\n                saldo: this.toHoursAndMinutes(parseInt(row.saldos.saldo, 10)),\n            };\n            if (parseInt(row.saldo, 10) > 0) over.push(add);\n            else under.push(add);\n        }\n\n        set(this, 'over', over);\n        set(this, 'under', under);\n    },\n\n    toHoursAndMinutes(minutes) {\n        const negative = minutes < 0;\n        minutes = Math.abs(minutes);\n        let hours = Math.floor(minutes / 60);\n        let minutesLeft = Math.floor(minutes - hours * 60);\n\n        return (\n            (negative ? '-' : '') + hours + ':' + (minutesLeft < 10 ? '0' : '') + minutesLeft + 'h'\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"r5t8wPg0\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\",\\\"user\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"saldo-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"over\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.over-max-saldo\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.user\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.saldo-anomality\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"over\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"saldo\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,0,[\\\"under\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.under-min-saldo\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.user\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.saldo-anomality\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"under\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"saldo\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/saldo/template.hbs\"}});","import Component from '@ember/component';\nimport settingsDateRange from '../common/common';\n\nexport default Component.extend(settingsDateRange('abcense'));\n","export default Ember.HTMLBars.template({\"id\":\"nGGohr0e\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"widget.anomalities.notify_time\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"dateRanges\\\"],[22,\\\"selectedDateRange\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"widget.anomalities.notify_time\\\"],null]],null]]]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"selectedDateRange\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/abcense/template.hbs\"}});","import { set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default function settingsDateRange(page) {\n    return {\n        intl: service(),\n        store: service(),\n        analytics: service(),\n\n        // 7pv, 14,pv, 30pv, 60pv, 90pv\n        dateRanges: computed(function () {\n            if (page === 'abcense') {\n                return [\n                    { id: '1', name: '1 ' + this.intl.t('general.months') },\n                    { id: '2', name: '2 ' + this.intl.t('general.months') },\n                    { id: '3', name: '3 ' + this.intl.t('general.months') },\n                    { id: '6', name: '6 ' + this.intl.t('general.months') },\n                    { id: '12', name: '12 ' + this.intl.t('general.months') },\n                ];\n            }\n\n            return [\n                { id: '7', name: '7 ' + this.intl.t('general.days') },\n                { id: '14', name: '14 ' + this.intl.t('general.days') },\n                { id: '30', name: '30 ' + this.intl.t('general.days') },\n                { id: '60', name: '60 ' + this.intl.t('general.days') },\n                { id: '90', name: '90 ' + this.intl.t('general.days') },\n            ];\n        }),\n        init() {\n            this._super();\n            let record = this.store.peekAll('widget-anomalies-setting').findBy('name', page);\n            if (!record) {\n                let storeValue = {\n                    name: page,\n                };\n\n                if (page === 'abcense') {\n                    storeValue.value = { selectedDateRange: 1 };\n                } else {\n                    storeValue.value = { selectedDateRange: 7 };\n                }\n                record = this.store.createRecord('widget-anomalies-setting', storeValue);\n            }\n            set(this, 'record', record);\n            set(this, 'selectedDateRange', this.record.value.selectedDateRange);\n        },\n        actions: {\n            save(selectedDateRange) {\n                this.analytics.trackEvent({\n                    category: 'Dashboard',\n                    action: `Change date range setting for ${page} to ${selectedDateRange}`,\n                    label: 'Anomalities widget',\n                });\n                set(this, 'record.value.selectedDateRange', selectedDateRange);\n                this.record.save();\n                this.cancel();\n            },\n            cancel() {\n                this.cancel();\n            },\n        },\n    };\n}\n","import Component from '@ember/component';\nimport { set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    analytics: service(),\n\n    settingsComponent: computed('currentSetting', function () {\n        return 'dash-board/widgets/anomalities/settings/' + this.currentSetting.replace('_', '-');\n    }),\n\n    actions: {\n        check(setting) {\n            this.toggleCheckRow(setting);\n        },\n        saveSettings() {\n            set(this, 'currentSetting', false);\n        },\n        closeModal() {\n            set(this, 'currentSetting', false);\n        },\n        setCurrentSetting(setting) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Open ${setting} settings`,\n                label: 'Anomalities widget',\n            });\n            set(this, 'currentSetting', setting);\n        },\n    },\n});\n","import Component from '@ember/component';\nimport settingsDateRange from '../common/common';\n\nexport default Component.extend(settingsDateRange('ending_passes'));\n","export default Ember.HTMLBars.template({\"id\":\"A/4W+oMd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"widget.anomalities.notify_time\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"dateRanges\\\"],[22,\\\"selectedDateRange\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"widget.anomalities.notify_time\\\"],null]],null]]]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"selectedDateRange\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/ending-passes/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\n\nexport default Component.extend({\n    intl: service(),\n    store: service(),\n    analytics: service(),\n    linkIds: computed.mapBy('hideUsers', 'id'),\n\n    dateRanges: computed(function () {\n        return [\n            { id: 'current_week', name: this.intl.t('widget.anomalities.current_week') },\n            { id: 'last_week', name: this.intl.t('widget.anomalities.last_week') },\n            { id: 'last_2_weeks', name: this.intl.t('widget.anomalities.last_2_weeks') },\n            { id: 'current_month', name: this.intl.t('widget.anomalities.current_month') },\n            { id: 'last_month', name: this.intl.t('widget.anomalities.last_month') },\n        ];\n    }),\n    sendMethods: computed(function () {\n        return [\n            { id: 'sms', name: this.intl.t('widget.anomalities.sms') },\n            { id: 'push', name: this.intl.t('widget.anomalities.push') },\n            { id: 'email', name: this.intl.t('widget.anomalities.email') },\n        ];\n    }),\n\n    showUsers: computed('users', 'hideUserIds', 'hideUserIds.length', function () {\n        return this.users.filter((user) => !this.hideUserIds.includes(user.id));\n    }),\n\n    hiddenUsers: computed('users', 'hideUserIds', 'hideUserIds.length', function () {\n        return this.users.filter((user) => this.hideUserIds.includes(user.id));\n    }),\n\n    init() {\n        this._super();\n        let record = this.store\n            .peekAll('widget-anomalies-setting')\n            .findBy('name', 'missing_worktimes');\n        if (!record)\n            record = this.store.createRecord('widget-anomalies-setting', {\n                name: 'missing_worktimes',\n                value: { selectedDateRange: 'current_week', hideUserIds: [], sendBy: 'push' },\n            });\n        set(this, 'record', record);\n        set(this, 'selectedDateRange', this.record.value.selectedDateRange);\n        set(this, 'hideUserIds', A(this.record.value.hideUserIds || []));\n        set(this, 'sendBy', this.record.value.sendBy);\n\n        set(this, 'users', []);\n        this.loadUsers();\n    },\n\n    actions: {\n        save() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Missing worktimes settings saved',\n                label: 'Anomalities widget',\n            });\n\n            set(this, 'record.value.selectedDateRange', this.selectedDateRange);\n            set(this, 'record.value.hideUserIds', this.hideUserIds);\n            set(this, 'record.value.sendBy', this.sendBy);\n\n            this.record.save();\n            this.cancel();\n        },\n        cancel() {\n            this.cancel();\n        },\n        searchChanged(value) {\n            this.loadUsers(typeof value == 'string' ? value : null);\n        },\n        selectUser(user) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'User selected to be shown on missing worktimes',\n                label: 'Anomalities widget',\n            });\n            this.hideUserIds.removeObject(user.id);\n        },\n        deselectUser(user) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'User selected to be hidden on missing worktimes',\n                label: 'Anomalities widget',\n            });\n            this.hideUserIds.pushObject(user.id);\n        },\n    },\n\n    async loadUsers(term) {\n        let params = {};\n        if (term) params.q = term;\n        set(this, 'users', await get(this, 'store').query('user', params));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"wHKLsVUX\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"row\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.date_range\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"dateRanges\\\"],[22,\\\"selectedDateRange\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"worksitediary.date_range\\\"],null]],null]]]],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"widget.anomalities.send_method\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"sendMethods\\\"],[22,\\\"sendBy\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"widget.anomalities.send_method\\\"],null]],null]]]],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-selector\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"first-list\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"list-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.selected_users\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"showUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"list-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"deselectUser\\\",[23,2,[]]]],[8],[1,[23,2,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"middle-svg\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"13\\\"],[10,\\\"height\\\",\\\"28\\\"],[10,\\\"viewBox\\\",\\\"0 0 13 28\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Polygon_12\\\"],[10,\\\"data-name\\\",\\\"Polygon 12\\\"],[10,\\\"transform\\\",\\\"translate(0 28) rotate(-90)\\\"],[10,\\\"fill\\\",\\\"#737373\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 26.72672462463379 12.5 L 1.273276209831238 12.5 L 14 0.6823278665542603 L 26.72672462463379 12.5 Z\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 14 1.364636421203613 L 2.546531677246094 12 L 25.45346832275391 12 L 14 1.364636421203613 M 14 0 L 28 13 L 0 13 L 14 0 Z\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[10,\\\"fill\\\",\\\"#707070\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"13\\\"],[10,\\\"height\\\",\\\"28\\\"],[10,\\\"viewBox\\\",\\\"0 0 13 28\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Polygon_11\\\"],[10,\\\"data-name\\\",\\\"Polygon 11\\\"],[10,\\\"transform\\\",\\\"translate(13) rotate(90)\\\"],[10,\\\"fill\\\",\\\"#737373\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 26.72672462463379 12.5 L 1.273276209831238 12.5 L 14 0.6823278665542603 L 26.72672462463379 12.5 Z\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 14 1.364636421203613 L 2.546531677246094 12 L 25.45346832275391 12 L 14 1.364636421203613 M 14 0 L 28 13 L 0 13 L 14 0 Z\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[10,\\\"fill\\\",\\\"#707070\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"second-list\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"list-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.unselected_users\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hiddenUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"list-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"selectUser\\\",[23,1,[]]]],[8],[1,[23,1,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"search-box-div\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"searchvalue\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/missing-worktimes/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"IJAowNXq\",\"block\":\"{\\\"symbols\\\":[\\\"setting\\\",\\\"@save\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"centered-table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.setting\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[23,1,[\\\"checked\\\"]],\\\"move move-CheckedCheckbox\\\",\\\"move move-UncheckedCheckbox\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[23,1,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"hasSettings\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setCurrentSetting\\\",[23,1,[\\\"type\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[10,\\\"colspan\\\",\\\"3\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no_rows_found\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[\\\"mt-4\\\",[24,[\\\"showOkAlso\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showOkAlso\\\"]]],null]],null],\\\"light\\\",[28,\\\"t\\\",[\\\"widget.anomalities.show_ok_also\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentSetting\\\"]]],null,{\\\"statements\\\":[[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"currentSetting\\\"]]],null],false],null],[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.settings-header-\\\",[24,[\\\"currentSetting\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,0,[\\\"settingsComponent\\\"]],[],[[\\\"@settings\\\",\\\"@data\\\",\\\"@saveSettings\\\",\\\"@cancel\\\"],[[23,0,[\\\"settings\\\"]],[23,0,[\\\"data\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveSettings\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"edit-button mt-4\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],[23,2,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/template.hbs\"}});","import Component from '@ember/component';\nimport settingsDateRange from '../common/common';\n\nexport default Component.extend(settingsDateRange('unapproved_worktimes'));\n","export default Ember.HTMLBars.template({\"id\":\"BFcG5Uhy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.date_range\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"dateRanges\\\"],[22,\\\"selectedDateRange\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"worksitediary.date_range\\\"],null]],null]]]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"selectedDateRange\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/unapproved-worktimes/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    error: service(),\n    intl: service(),\n    localstorage: service(),\n\n    init() {\n        this._super();\n        let forms = [];\n        if (this.Collector.testNeedsOne('worktime')) forms.push('worktime');\n        if (this.Collector.testNeedsOne('abcense')) forms.push('abcense');\n        this.forms = forms;\n\n        this.loadProjects();\n    },\n\n    actions: {\n        check(row) {\n            this.toggleCheckRow(row);\n        },\n        checkAll() {\n            if (this.isChecked) {\n                this.toggleCheckAll('missing_worktimes', false);\n            } else {\n                this.toggleCheckAll('missing_worktimes', true);\n            }\n            this.toggleProperty('isChecked');\n        },\n\n        sendNotificationToCheckedUsers() {\n            this.sendNotificationToCheckedUsers();\n        },\n        showAddModal(user, date) {\n            set(this, 'selectedUser', user);\n            set(this, 'selectedDate', date);\n            set(this, 'showAddModal', true);\n        },\n    },\n\n    async loadProjects() {\n        const projectSums = {};\n        this.data.forEach((item) => {\n            const message = JSON.parse(item.message);\n            if (!message.project) return;\n            if (projectSums[message.project]) projectSums[message.project]++;\n            else projectSums[message.project] = 1;\n        });\n\n        const projects = await this.store.query('project', {\n            id: Object.keys(projectSums).join(','),\n        });\n\n        const errorsByProject = Object.keys(projectSums).map((projectid) => {\n            return {\n                project: { name: projects.findBy('id', projectid).name, id: projectid },\n                errors: projectSums[projectid],\n            };\n        });\n\n        set(this, 'projects', errorsByProject);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"6DlMRl33\",\"block\":\"{\\\"symbols\\\":[\\\"project\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"centered-table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.worksite\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.errors\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"projects\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"errors\\\"]],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"td\\\",true],[8],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary\\\",\\\"projects.edit.taxmanerrors\\\",[23,1,[\\\"project\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"widget.anomalities.link-to-report\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/taxman-errors/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"2HD+BuUw\",\"block\":\"{\\\"symbols\\\":[\\\"anomality\\\",\\\"anomality\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@tableLayout\\\",\\\"@changeLayout\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,0,[\\\"tableLayout\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeLayout\\\"],null],[23,9,[]],[23,10,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[23,0,[\\\"promise\\\"]],3]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"tableLayout\\\"]],\\\"grid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"anomality-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"anomalities\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"and\\\",[[23,2,[\\\"checked\\\"]],[28,\\\"not\\\",[[24,[\\\"showOkAlso\\\"]]],null],[28,\\\"not\\\",[[28,\\\"eq\\\",[[23,2,[\\\"value\\\"]],\\\"0\\\"],null]],null]],null],[28,\\\"and\\\",[[23,2,[\\\"checked\\\"]],[24,[\\\"showOkAlso\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"anomality-item \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,2,[\\\"value\\\"]],\\\"0\\\"],null],\\\"ok-item\\\",\\\"warning-item\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"gotoAnomality\\\",[23,2,[]]]],[8],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"anomality-item-content\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h2\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,2,[\\\"value\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,0,false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[23,2,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"centered-table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.anomality\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.amount\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"anomalities\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"and\\\",[[23,1,[\\\"checked\\\"]],[28,\\\"not\\\",[[24,[\\\"showOkAlso\\\"]]],null],[28,\\\"not\\\",[[28,\\\"eq\\\",[[23,1,[\\\"value\\\"]],\\\"0\\\"],null]],null]],null],[28,\\\"and\\\",[[23,1,[\\\"checked\\\"]],[24,[\\\"showOkAlso\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"value\\\"]],\\\"0\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"filteredByProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[23,1,[\\\"type\\\"]],\\\".filtered\\\"],null]],[[\\\"project\\\"],[[24,[\\\"projectName\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[23,1,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[23,1,[\\\"value\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-View\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"gotoAnomality\\\",[23,1,[]]]],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[10,\\\"colspan\\\",\\\"4\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no_rows_found\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"showSettings\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeSettings\\\"],null],[28,\\\"t\\\",[\\\"widget.anomalities.settings-header\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"dash-board/widgets/anomalities/settings\\\",[],[[\\\"@save\\\",\\\"@data\\\",\\\"@toggleCheckRow\\\",\\\"@showOkAlso\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"saveSettings\\\"],null],[23,0,[\\\"anomalitiesSettings\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCheckRow\\\"],null],[23,0,[\\\"showOkAlso\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAnomality\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAnomality\\\"]]],null],false],null],[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[24,[\\\"showAnomality\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"anomalityValue\\\"]],\\\"0\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"report-placeholder\\\",null,[[\\\"customHeader\\\",\\\"searchIcon\\\",\\\"searchInfoText\\\"],[[28,\\\"t\\\",[\\\"widget.anomalities.no_rows\\\"],null],true,[28,\\\"t\\\",[\\\"widget.anomalities.no_rows.infoText\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showAnomality\\\"]],\\\"missing_worktimes\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"dash-board/widgets/anomalities/missing-worktimes\\\",[],[[\\\"@users\\\",\\\"@settings\\\",\\\"@toggleCheckAll\\\",\\\"@toggleCheckRow\\\",\\\"@isChecked\\\",\\\"@sendNotificationToCheckedUsers\\\",\\\"@promise\\\"],[[23,0,[\\\"missingWorktimesPerUser\\\"]],[23,0,[\\\"settings\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCheckAll\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCheckRow\\\"],null],[23,0,[\\\"allRowsChecked\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"sendNotificationToCheckedUsers\\\"],null],[23,0,[\\\"promise\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showAnomality\\\"]],\\\"saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"dash-board/widgets/anomalities/saldo\\\",[],[[\\\"@data\\\"],[[23,0,[\\\"saldo\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showAnomality\\\"]],\\\"taxman_errors\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"dash-board/widgets/anomalities/taxman-errors\\\",[],[[\\\"@data\\\"],[[23,0,[\\\"taxman_errors\\\"]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"edit-button mt-4\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showSettings\\\"]],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.settings\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    intl: service(),\n    collector: service('collector-service'),\n    flags: service(),\n\n    init() {\n        this._super(...arguments);\n        this.headers = ['name', 'hours'];\n        this.form = 'bank';\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'data', this.getData());\n    },\n\n    didDestroyElement() {\n        this._super(...arguments);\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'abcense' || params.type === 'worktime')\n            set(this, 'data', this.getData());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'data', this.getData());\n    },\n    async getData() {\n        let data = await this.ttapi.request(\n            '/api/getBankHours?user=' + this.session.currentUser.id,\n        );\n        return data;\n    }\n});\n","export default Ember.HTMLBars.template({\"id\":\"U7mSTPUe\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[28,\\\"promise-all\\\",[[24,[\\\"data\\\"]],[24,[\\\"headers\\\"]]],null],3]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/table\\\",null,[[\\\"data\\\",\\\"headers\\\",\\\"form\\\"],[[24,[\\\"data\\\"]],[24,[\\\"headers\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/bank/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    intl: service(),\n    dialogs: service(),\n    analytics: service(),\n\n    didReceiveAttrs() {\n        set(this, 'help', this.store.findAll('help'));\n    },\n\n    actions: {\n        save(row) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Save instruction',\n                label: 'custom-help widget',\n            });\n\n            if (row.type === 'link' && !row.url) return;\n\n            row.save();\n            set(this, 'editRow', null);\n        },\n\n        create() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Create new clicked',\n                label: 'custom-help widget',\n            });\n            set(this, 'editRow', this.store.createRecord('help', {}));\n        },\n\n        async remove(row) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Remove instruction',\n                label: 'custom-help widget',\n            });\n            if (await this.dialogs.confirm(this.intl.t('general.remove_row'))) row.destroyRecord();\n        },\n\n        edit(row) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Edit instruction',\n                label: 'custom-help widget',\n            });\n            set(this, 'show', null);\n            set(this, 'editRow', row);\n        },\n\n        open(row) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Open instruction',\n                label: 'custom-help widget',\n            });\n            if (row.type === 'link') window.open(this.addProtocol(row.url), '_blank');\n            else set(this, 'show', row);\n        },\n\n        close() {\n            if (get(this, 'editRow.isNew')) this.editRow.deleteRecord();\n            set(this, 'editRow', null);\n        },\n    },\n\n    addProtocol(url) {\n        if (!url.startsWith('http://') && !url.startsWith('https://')) return 'https://' + url;\n        return url;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"AlkyZoMQ\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[23,0,[\\\"help\\\"]],2]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"help-container\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"help\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"help\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"open\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"header\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[8],[1,[23,1,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    (\\\"],[1,[28,\\\"t\\\",[\\\"general.empty\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"type\\\"]],\\\"link\\\"],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"show-on-hover pull-right move move-Delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"show-on-hover pull-right move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"edit\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"report-placeholder\\\",null,[[\\\"customHeader\\\"],[[28,\\\"t\\\",[\\\"report.placeholder.custom-help\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"create\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"show\\\"]]],null],null],null],[24,[\\\"show\\\",\\\"header\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-container\\\"],[8],[1,[24,[\\\"show\\\",\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"show\\\"]]],null],null]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editRow\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"editRow\\\",\\\"header\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"bootstrap-field\\\",null,[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"widget.help.header\\\"],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[24,[\\\"editRow\\\",\\\"header\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bootstrap-field\\\",null,[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"widget.help.type\\\"],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-button-group-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"btn-m flex-button-group-item-small flex-button-modal \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"link\\\"],null],\\\"flex-button-group-item-small-selected\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]]],null],\\\"link\\\"]],[8],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"link\\\"],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark radio-button-checkbox hidden-xs hidden-sm\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"widget.help.link\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"btn-m flex-button-group-item-small flex-button-modal \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"text\\\"],null],\\\"flex-button-group-item-small-selected\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]]],null],\\\"text\\\"]],[8],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"text\\\"],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark radio-button-checkbox hidden-xs hidden-sm\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"widget.help.text\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"link\\\"],null]],null,{\\\"statements\\\":[[4,\\\"bootstrap-field\\\",null,[[\\\"text\\\",\\\"error\\\",\\\"mandatory\\\"],[[28,\\\"t\\\",[\\\"widget.help.url\\\"],null],[28,\\\"unless\\\",[[24,[\\\"editRow\\\",\\\"url\\\"]],[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null]],null],true]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[24,[\\\"editRow\\\",\\\"url\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"text\\\"],null]],null,{\\\"statements\\\":[[4,\\\"bootstrap-field\\\",null,[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"widget.help.content\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"rows\\\",\\\"value\\\"],[\\\"form-control\\\",8,[24,[\\\"editRow\\\",\\\"text\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"editRow\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/custom-help/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    flags: service(),\n    totalDaysLeft: 0,\n\n    init() {\n        this._super();\n        this.headers = ['year', 'days', 'daysleft'];\n        if (this.Collector.testNeedsOne('modules.holiday_pay') && this.flags.test('holidaypay_v2'))\n            this.headers.push('holidayPays');\n        this.form = 'holiday';\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'data', this.getHolidays());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'abcense') set(this, 'data', this.getHolidays());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'data', this.getHolidays());\n    },\n\n    async getHolidays() {\n        if (this.flags.test('holiday-checker')) return this.newGetHolidays();\n\n        if (!this.Collector.testNeedsOne('abcense')) return [];\n\n        let holidaySeasonChangeDate = moment().startOf('year').add({ days: 1, months: 4 });\n        let holidaySeason = moment().isSameOrAfter(holidaySeasonChangeDate, 'day')\n            ? moment().year() + 1\n            : moment().year();\n        // If it's currently 1.1 - 1.4, dont't show newest holiday season yet\n        const isStartOfYear = moment().isBetween(\n            moment().startOf('year'),\n            moment().startOf('year').add({ months: 3 }),\n            'day',\n        );\n\n        let arr = [];\n        let years = [];\n\n        if (!isStartOfYear) years.pushObject(holidaySeason + '-05-02');\n        years.pushObject(holidaySeason - 1 + '-05-02');\n        years.pushObject(holidaySeason - 2 + '-05-02');\n        years.pushObject(holidaySeason - 3 + '-05-02');\n        years.pushObject(holidaySeason - 4 + '-05-02');\n\n        arr = await this.getMultiSeasonHolidays(years);\n        let filteredArr = arr.filter((data) => data.daysleft > 0 || data.year == holidaySeason - 1 || data.holidayPays > 0);\n\n        set(\n            this,\n            'totalDaysLeft',\n            filteredArr.reduce((sum, data) => sum + (data.daysleft || 0), 0),\n        );\n\n        filteredArr = arr.filter(\n            (data) =>\n                data.daysleft > 0 ||\n                data.year == holidaySeason - 1 ||\n                (data.holidayPays > 0 && this.Collector.testNeedsOne('modules.holiday_pay')),\n        );\n        const totalDays = filteredArr.reduce(\n            (sum, data) =>\n                sum +\n                (data.daysleft || 0) +\n                (this.Collector.testNeedsOne('modules.holiday_pay') ? data.holidayPays || 0 : 0),\n            0,\n        );\n        set(this, 'totalDaysLeft', totalDays);\n\n        return filteredArr.reverse();\n    },\n\n    async getMultiSeasonHolidays(years) {\n        let params = {\n            id: this.session.currentUser.id,\n            years: years.join(','),\n            country: this.session.currentUser.company_info.country,\n        };\n\n        const url = 'api/getMultipleSeasons';\n\n        let holidays = await get(this, 'Collector').ttapi({\n            url: url,\n            data: params,\n        });\n\n        return holidays.users.map((row) => {\n            return {\n                year: row.holidayYear,\n                days: row.allDays,\n                daysleft: row.daysLeft,\n                holidayPays: row.availableHolidayPays,\n            };\n        });\n    },\n\n    /**\n     * holidays are fetched directly from ttapi route api/getUserHolidays\n     * @returns\n     */\n    async newGetHolidays() {\n        if (!this.Collector.testNeedsOne('abcense')) return [];\n\n        let params = {\n            id: this.session.currentUser.id,\n            country: this.session.currentUser.company_info.country,\n        };\n\n        const url = 'api/getUserHolidays';\n\n        let holidays = await get(this, 'Collector').ttapi({\n            url: url,\n            data: params,\n        });\n\n        set(this, 'totalDaysLeft', (holidays.sums.daysleft + holidays.sums.holidayPays));\n\n        // current year (key === 0) is always shown\n        const yearsWithDaysLeft = holidays.years.filter(\n            (year, key) => year.daysleft > 0 || key === 0 || year.holidayPays > 0,\n        );\n        return yearsWithDaysLeft;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"n2iv0g2Y\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[24,[\\\"data\\\"]],4]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/table\\\",null,[[\\\"data\\\",\\\"headers\\\",\\\"form\\\"],[[24,[\\\"data\\\"]],[24,[\\\"headers\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"daysleft\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"daysleft-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.holiday.daysleft_total\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"daysleft-sum-circle\\\"],[8],[1,[22,\\\"totalDaysLeft\\\"],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/holiday/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    session: service(),\n    collector: service('collector-service'),\n    store: service(),\n    evented: service(),\n\n    init() {\n        this._super();\n        this.siteCards = [null, null, null];\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumeEvent');\n    },\n\n    async didReceiveAttrs() {\n        this.mysites = await this.getMySites();\n        if (this.mysites) {\n            this.addMysitesToCards();\n        }\n    },\n\n    didInsertElement() {\n        set(this, 'canUse', this.canWeUseThisWidget());\n        set(this, 'promise', this.getOpenWorktime());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumeEvent');\n    },\n\n    actions: {\n        notifySiteCards() {\n            this.addMysitesToCards();\n        },\n        setRemovableIndexNull(project) {\n            this.siteCards.splice(this.siteCards.indexOf(project), 1, null);\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') {\n            set(this, 'promise', this.getOpenWorktime());\n        }\n    },\n\n    onResumeEvent(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'promise', this.getOpenWorktime());\n    },\n\n    async getMySites() {\n        return await this.store.findAll('my-site');\n    },\n\n    addMysitesToCards() {\n        let mySitesArr = this.mysites.toArray();\n        for (let i = 0; i < this.mysites.length; i++) {\n            set(this.siteCards, i, mySitesArr[i]);\n        }\n        this.notifyPropertyChange('siteCards');\n    },\n\n    async getOpenWorktime() {\n        let worktimes = await this.store.query('worktime', {\n            date:\n                moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD'),\n            user: this.session.currentUser.id,\n            sideload: true,\n        });\n        let openWorktimes = await worktimes.filter((worktime) => isEmpty(worktime.endtime));\n        set(this, 'openWorktime', !isEmpty(openWorktimes) ? openWorktimes.firstObject : null);\n    },\n\n    canWeUseThisWidget() {\n        return !this.collector.fieldArray('worktime').some((item) => {\n            return item.features.mandatory && !['project', 'user'].includes(item.name);\n        });\n    },\n});\n","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\n\nexport default Component.extend({\n    async didReceiveAttrs() {\n        let proj = await get(this.project, 'project');\n        set(this, 'projectInfo', proj);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Fj3/NdKj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"projectInfo\\\",\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-image\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"api-image\\\",[[24,[\\\"projectInfo\\\",\\\"image\\\",\\\"firstObject\\\",\\\"s3url\\\"]]],null],\\\"')\\\"]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"my-sites-delete-button\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showConfirmationPage\\\"]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-image\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"random-mysite-image\\\",[[24,[\\\"projectInfo\\\",\\\"id\\\"]],5],null],\\\"')\\\"]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"my-sites-delete-button\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showConfirmationPage\\\"]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"my-sites-project-name\\\"],[11,\\\"title\\\",[29,[[24,[\\\"projectInfo\\\",\\\"name\\\"]]]]],[8],[1,[24,[\\\"projectInfo\\\",\\\"name\\\"]],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/my-sites/project-info/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, set, get, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    intl: service(),\n    notifications: service(),\n    error: service(),\n    evented: service(),\n    analytics: service(),\n    classNameBindings: ['isDashed:dashed'],\n    confirmPage: false,\n    pausePage: false,\n    commentPage: false,\n    selectNew: false,\n    loading: false,\n    unit: 'min',\n\n    isDashed: computed('project', function () {\n        return !this.project;\n    }),\n\n    projectField: computed(function () {\n        let field = this.Collector.field('worktime', 'project');\n        if (field) {\n            field.prompt = 'my-sites.add_site';\n            field.skipForcedGPS = true;\n        }\n        return field;\n    }),\n\n    worktimeOn: computed('openWorktime', 'project', function () {\n        if (!this.openWorktime || !this.project) return false;\n\n        let openWorktimeProject = get(this.openWorktime, 'project.id');\n        let siteCardProject = get(this.project, 'project.id');\n\n        if (openWorktimeProject === siteCardProject) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n\n    startDateAndTime: computed('openWorktime', function () {\n        return this.openWorktime.date + ' ' + this.openWorktime.starttime;\n    }),\n\n    actions: {\n        async startWork(mysite) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Worktime startted',\n                label: 'my-sites widget',\n            });\n\n            let proj = await get(mysite, 'project');\n            try {\n                set(this, 'loading', true);\n                let record = this.createWorktime(proj);\n                await record.save();\n                set(this, 'worktimeStartMoment', moment());\n                this.notifications.success(this.intl.t('timetracker.timecard.started'), {\n                    autoClear: true,\n                });\n                set(this, 'openWorktime', record);\n            } catch (error) {\n                if (\n                    error.errors &&\n                    error.errors.firstObject &&\n                    error.errors.firstObject.error === 'overlap' &&\n                    this.openWorktime\n                ) {\n                    //Ugly try catch to handle absences on project change...should be made better in EP-6663\n                    try {\n                        if (error.errors.firstObject.errorMeta.hits === 'worktime') {\n                            this.setEndtime();\n                            await this.openWorktime.save();\n                            this.notifications.success(this.intl.t('general.saved'), {\n                                autoClear: true,\n                            });\n                            get(this, 'evented').storeEvent(\n                                'insert',\n                                'worktime',\n                                this.openWorktime,\n                            );\n                            set(this, 'openWorktime', null);\n\n                            let record = this.createWorktime(proj);\n                            await record.save();\n                            set(this, 'worktimeStartMoment', moment());\n                            this.notifications.success(\n                                this.intl.t('timetracker.timecard.started'),\n                                {\n                                    autoClear: true,\n                                },\n                            );\n                            set(this, 'openWorktime', record);\n                            set(this, 'pausePage', false);\n                            set(this, 'commentPage', false);\n                        }\n                    } catch (error) {\n                        this.error.notify(error);\n                    }\n                } else {\n                    this.error.notify(error);\n                }\n            } finally {\n                set(this, 'loading', false);\n            }\n        },\n\n        async endWork() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Worktime ended',\n                label: 'my-sites widget',\n            });\n\n            try {\n                set(this, 'loading', true);\n                this.setEndtime();\n                await this.openWorktime.save();\n                this.notifications.success(this.intl.t('general.saved'), {\n                    autoClear: true,\n                });\n                get(this, 'evented').storeEvent('insert', 'worktime', this.openWorktime);\n                set(this, 'openWorktime', null);\n            } catch (error) {\n                this.error.notify(error);\n            } finally {\n                set(this, 'loading', false);\n            }\n        },\n\n        showPausePage() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Show pause page',\n                label: 'my-sites widget',\n            });\n\n            set(this, 'pausePage', true);\n            set(this, 'pause', this.openWorktime.pause ? this.openWorktime.pause : null);\n            set(this, 'commentPage', false);\n        },\n\n        addPauseToWorktime(value) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Pause added',\n                label: 'my-sites widget',\n            });\n\n            set(this.openWorktime, 'pause', value);\n            this.openWorktime.save();\n            this.notifications.success(this.intl.t('general.saved'), {\n                autoClear: true,\n            });\n            set(this, 'pausePage', false);\n        },\n\n        showCommentPage() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Show comment page',\n                label: 'my-sites widget',\n            });\n\n            set(this, 'commentPage', true);\n            set(\n                this,\n                'comment',\n                this.openWorktime.description ? this.openWorktime.description : null,\n            );\n            set(this, 'pausePage', false);\n        },\n\n        addCommentToWorktime(value) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Comment added',\n                label: 'my-sites widget',\n            });\n\n            set(this.openWorktime, 'description', value);\n            this.openWorktime.save();\n            this.notifications.success(this.intl.t('general.saved'), {\n                autoClear: true,\n            });\n            set(this, 'commentPage', false);\n        },\n        async addMySite(project) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'My site Added',\n                label: 'my-sites widget',\n            });\n            if (!project || (project && !project.data)) return; //stupid jquery event\n            if (this.siteCardAlreadyAdded(project.id)) {\n                this.notifications.info(this.intl.t('widget.my-sites.sitecard_already_added'), {\n                    autoClear: true,\n                });\n                return;\n            }\n            await this.store.createRecord('my-site', { project }).save();\n            set(this, 'selectNew', false);\n            this.notifySiteCards();\n        },\n\n        async removeMySite(project) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'My site Removed',\n                label: 'my-sites widget',\n            });\n            await project.destroyRecord();\n            set(this, 'project', null);\n            set(this, 'confirmPage', false);\n            set(this, 'selectNew', false);\n            this.setRemovableIndexNull(project);\n        },\n    },\n\n    createWorktime(proj) {\n        let record = this.store.createRecord('worktime');\n\n        setProperties(record, {\n            date: moment().format('YYYY-MM-DD'),\n            user: this.session.currentUser.id,\n            project: proj,\n            starttime: moment().format('HH:mm'),\n            validation: 'off',\n        });\n\n        return record;\n    },\n\n    setEndtime() {\n        if (\n            get(this.openWorktime, 'date') === moment().format('YYYY-MM-DD') &&\n            get(this.openWorktime, 'starttime') > moment().format('HH:mm')\n        ) {\n            set(this.openWorktime, 'endtime', get(this.openWorktime, 'starttime'));\n        } else {\n            set(this.openWorktime, 'endtime', moment().format('HH:mm'));\n        }\n    },\n\n    siteCardAlreadyAdded(project) {\n        let siteCards = this.store.peekAll('my-site');\n        let mapped = siteCards.map((site) => {\n            if (site) {\n                let cardData = get(site, 'project');\n                return get(cardData, 'id');\n            }\n        });\n        return mapped.includes(project);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"xQTAVWsH\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"confirmPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-confirm-page\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.my-sites.confirm_card_removal\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs flex-item yes-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeMySite\\\",[24,[\\\"project\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.yes\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs flex-item no-button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"confirmPage\\\"]]],null],false]],[8],[1,[28,\\\"t\\\",[\\\"general.no\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"worktimeOn\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"commentPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"mysites-align-center\\\"],[8],[1,[23,0,[\\\"openWorktime\\\",\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysites-comment-objects\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\"],[8,[24,[\\\"comment\\\"]],\\\"\\\",[28,\\\"t\\\",[\\\"mysites.commentpage.add_comment\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysites-flexy-buttons\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"mysites-ok-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addCommentToWorktime\\\",[24,[\\\"comment\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"mysites-notok-button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"commentPage\\\"]]],null],false]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"dash-board/widgets/my-sites/project-info\\\",null,[[\\\"project\\\",\\\"showConfirmationPage\\\"],[[24,[\\\"project\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"confirmPage\\\"]]],null],true],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"pausePage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"mysites-align-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.mysites.add_pause\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysites-pause-objects\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysites-pause-values\\\"],[10,\\\"data-anchor\\\",\\\"mysites-pause-field\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"pause\\\"]],\\\"mysites-pause-text\\\"]]],false],[0,\\\" \\\"],[1,[22,\\\"unit\\\"],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"mysites-ok-button\\\"],[12,\\\"data-anchor\\\",\\\"mysites-pause-save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addPauseToWorktime\\\",[24,[\\\"pause\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"mysites-notok-button\\\"],[12,\\\"data-anchor\\\",\\\"mysites-pause-close\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"pausePage\\\"]]],null],false]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-stop-button-container\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"my-sites-stop-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"endWork\\\"]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Stop\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worktime-duration\\\"],[8],[4,\\\"if\\\",[[23,0,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"duration-clock\\\",[[23,0,[\\\"startDateAndTime\\\"]]],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"00:00:00\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"commentPage\\\"]],\\\"absolute-buttons\\\",\\\"my-sites-additional-buttons\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.pause\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-xs my-sites-additional-button \\\",[28,\\\"if\\\",[[24,[\\\"pausePage\\\"]],\\\"active-button\\\"],null]]]],[12,\\\"data-anchor\\\",\\\"my-sites-widget-pause-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showPausePage\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worktime.pause\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-xs my-sites-additional-button \\\",[28,\\\"if\\\",[[24,[\\\"commentPage\\\"]],\\\"active-button\\\"],null]]]],[12,\\\"data-anchor\\\",\\\"my-sites-widget-description-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showCommentPage\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worktime.description\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[2,\\\"button class=\\\\\\\"btn btn-xs my-sites-additional-button\\\\\\\">{{t \\\\\\\"widget.my-sites.change\\\\\\\"}}</button\\\"],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"dash-board/widgets/my-sites/project-info\\\",null,[[\\\"project\\\",\\\"showConfirmationPage\\\"],[[24,[\\\"project\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"confirmPage\\\"]]],null],true],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-play-button-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"my-sites-play-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"startWork\\\",[24,[\\\"project\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Play\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"selectNew\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-selecting-page\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"projectField\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addMySite\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"my-sites-add-new\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"selectNew\\\"]]],null],true]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.my-sites.add_new_card\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CityScape\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/my-sites/site-card/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"iyDlwN5v\",\"block\":\"{\\\"symbols\\\":[\\\"site\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[23,0,[\\\"promise\\\"]],6]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-card-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,0,[\\\"canUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.my-sites.can_not_use\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[23,0,[\\\"siteCards\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"dash-board/widgets/my-sites/site-card\\\",null,[[\\\"project\\\",\\\"openWorktime\\\",\\\"setRemovableIndexNull\\\",\\\"notifySiteCards\\\"],[[23,1,[]],[23,0,[\\\"openWorktime\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRemovableIndexNull\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"notifySiteCards\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/my-sites/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport Ember from 'ember';\nimport { later } from '@ember/runloop';\nimport { htmlSafe } from '@ember/template';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class WorkingNowComponent extends Component {\n    @service session;\n    @service evented;\n    @service('collector-service') Collector;\n    @service intl;\n    @service localStorageWrapper;\n    @service analytics;\n    @service('promo-messages') promoMessages;\n\n    @tracked data;\n    @tracked messageModalcontent;\n    @tracked showMessageModal;\n    @tracked selectedType;\n\n    get styleNamespace() {\n        return podNames['dash-board/widgets/promo-messages'];\n    }\n\n    constructor() {\n        super(...arguments);\n        this.types = ['release_note', 'tips', 'new_feature', 'future_webinar', 'failure_report'];\n        this.headers = ['subject', 'startdate'];\n        this.form = 'promomessage';\n        this.key = 'messageWidgetFilters';\n        this.subtle_key = 'promomessages_subtle';\n        this.selectedType = this.getFiltersFromLS();\n        this.getUnreadMessages();\n        this.data = this.getMessages();\n\n        if (!Ember.testing) {\n            later(\n                this,\n                () => {\n                    this.getUnreadMessages();\n                    this.data = this.getMessages();\n                },\n                10000,\n            );\n        }\n\n        this.evented.on('onResumed', this, 'onResumed');\n    }\n\n    @action\n    showMessage(row) {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Show message',\n            label: 'Promo messages widget',\n        });\n\n        this.markMessageAsRead(row);\n        this.messageModalcontent = row;\n        this.showMessageModal = true;\n    }\n\n    @action\n    closeMessage() {\n        this.messageModalcontent = null;\n        this.showMessageModal = false;\n    }\n\n    @action\n    typeChange(type) {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: `Message type change to ${type}`,\n            label: 'Promo messages widget',\n        });\n\n        this.selectedType = type;\n        this.setFiltersToLS(this.selectedType);\n        this.data = this.getMessages();\n    }\n\n    willDestroy() {\n        this.evented.off('onResumed', this, 'onResumed');\n    }\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        this.data = this.getMessages();\n    }\n\n    async getMessages() {\n        let products = this.Collector.products;\n        let country = this.session.currentUser.company_info.country;\n        let userlevel = this.session.currentUser.userlevel;\n\n        if (!products || !country || !userlevel) return [];\n\n        const messages = await this.promoMessages.getMessages({\n            country: country,\n            userlevel: userlevel,\n            prods: products,\n            new: true,\n            type: this.selectedType,\n        });\n        // Sort by startdate\n        let data = messages.data.sort((el1, el2) => (el1.startdate < el2.startdate ? 1 : -1));\n        return this.formatMessageData(data);\n    }\n\n    formatMessageData(data) {\n        let badgeText = this.intl.t('widget.promomessage.unread');\n        let formattedData = data.map((item) => {\n            item.subject = item.type\n                ? this.intl.t('promomessage.type.' + item.type) + ': ' + item.title\n                : item.title;\n            item.startdate = moment(item.startdate).format('DD.MM.YYYY');\n            if (this.unReadMessages && this.unReadMessages.findBy('id', item.id)) {\n                item.subject = htmlSafe(\n                    item.subject +\n                        ' <span class=\"badge badge-pill badge-unread\">' +\n                        badgeText +\n                        '</span>',\n                );\n                item.class = 'unread';\n            }\n            return item;\n        });\n        return formattedData;\n    }\n\n    setFiltersToLS(filters) {\n        if (this.key) this.localStorageWrapper.setUserSetting(this.key, filters);\n    }\n\n    getFiltersFromLS() {\n        let LSfilters = this.localStorageWrapper.getUserSetting(this.key);\n        if (LSfilters && LSfilters.length > 0 && this.key) return LSfilters;\n        return null;\n    }\n\n    getUnreadMessages() {\n        let messages = this.localStorageWrapper.getUserSetting(this.subtle_key);\n        if (messages && messages.length > 0) this.unReadMessages = messages;\n    }\n\n    markMessageAsRead(item) {\n        if (!this.unReadMessages) return;\n        this.unReadMessages = this.unReadMessages.rejectBy('id', item.id);\n        this.localStorageWrapper.setUserSetting(this.subtle_key, this.unReadMessages);\n\n        let readMessages = this.localStorageWrapper.getUserSetting('promomessages');\n        readMessages.push(item.id);\n        this.localStorageWrapper.setUserSetting('promomessages', [...new Set(readMessages)]);\n        this.data = this.getMessages();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"5mp436Tb\",\"block\":\"{\\\"symbols\\\":[\\\"type\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"data\\\"]],3]]],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"fixed-flex-filters\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@placeholder\\\",\\\"@onChange\\\",\\\"@noMatchesMessage\\\"],[[23,0,[\\\"types\\\"]],[23,0,[\\\"selectedType\\\"]],[28,\\\"t\\\",[\\\"promomessage.select_type\\\"],null],[23,0,[\\\"typeChange\\\"]],[28,\\\"t\\\",[\\\"general.no-content\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"promomessage.type.\\\",[23,1,[]]],null]],null],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/table\\\",[],[[\\\"@data\\\",\\\"@headers\\\",\\\"@form\\\",\\\"@rowClicked\\\"],[[23,0,[\\\"data\\\"]],[23,0,[\\\"headers\\\"]],[23,0,[\\\"form\\\"]],[23,0,[\\\"showMessage\\\"]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showMessageModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"mess-ages/types/promo\\\",[],[[\\\"@close\\\",\\\"@store\\\",\\\"@content\\\"],[[23,0,[\\\"closeMessage\\\"]],[23,0,[\\\"store\\\"]],[23,0,[\\\"messageModalcontent\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/promo-messages/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    error: service(),\n    intl: service(),\n    localstorage: service(),\n    analytics: service(),\n    Collector: service('collector-service'),\n\n    user: null,\n    project: null,\n    worktimegroup: null,\n\n    formattedSalaryData: computed('salaryData', async function () {\n        let salarytypes = await this.getSalarytypes();\n        let data = await this.salaryData;\n        if (isEmpty(data)) return [];\n        let arr = [];\n\n        //First calculate total work hours and push to array (% is always 100 if there are work hours)\n        let total_hours = await this.calculateTotalHours();\n        if (total_hours > 0) {\n            arr.pushObject({\n                salarytype: this.intl.t('report.worktime.work_hours'),\n                accrual: get(this, 'Collector')._format_(\n                    total_hours,\n                    'worktime',\n                    'work_hours',\n                    'salarycategory',\n                ),\n                percent: '100.0',\n            });\n        }\n\n        //Then loop through salarytypes and calculate accruals based on salarydata and % based on work hours\n        salarytypes.forEach(async (type) => {\n            let accrual = data.reduce((sum, row) => sum + (Number(row[type.name]) || 0), 0);\n            if (accrual === 0) return;\n            let percent =\n                type.fieldType === 'work_hours' && total_hours > 0\n                    ? ((accrual / total_hours) * 100).toFixed(1)\n                    : '-';\n\n            if (type.fieldType) {\n                let fieldType =\n                    type.fieldType === 'no_percent_hours' ? 'work_hours' : type.fieldType;\n                accrual = get(this, 'Collector')._format_(\n                    accrual,\n                    'worktime',\n                    fieldType,\n                    'salarycategory',\n                );\n            }\n\n            let salarytype = type.translatedName ? type.translatedName : type.name;\n            arr.pushObject({\n                salarytype: salarytype,\n                accrual:\n                    type.fieldType === 'comp'\n                        ? accrual + ' ' + this.intl.t('general.amount')\n                        : accrual,\n                percent: percent >= 0 ? percent : '-',\n            });\n        });\n\n        let sortedArr = arr.sort((a, b) => {\n            let percentA = !isNaN(parseFloat(a.percent)) ? parseFloat(a.percent) : 0;\n            let percentB = !isNaN(parseFloat(b.percent)) ? parseFloat(b.percent) : 0;\n            if (percentA === 0 && typeof a.accrual === 'string' && !a.accrual.indexOf('h') > -1) {\n                percentA = 0.01;\n            }\n            return percentB - percentA;\n        });\n\n        return sortedArr;\n    }),\n\n    tableLayout: computed(function () {\n        if (this.localstorage.getItem('sumwidget-layout')) {\n            return this.localstorage.getItem('sumwidget-layout');\n        } else {\n            return 'report';\n        }\n    }),\n\n    projectField: computed('project', function () {\n        let field = this.Collector.field('worktime', 'project');\n        if (field) {\n            field.prompt = 'general.all_projects';\n        }\n        return field;\n    }),\n\n    userField: computed('user', function () {\n        let field = this.Collector.field('worktime', 'user');\n        if (field) {\n            field.prompt = 'general.all_users';\n        }\n        return field;\n    }),\n\n    /*worktimegroupField: computed('worktimegroup', function() {\n        let field = this.Collector.field('user', 'worktimegroup')\n        if (field) {\n            field.value = this.worktimegroup\n            field.prompt = \"general.all_worktimegroups\"\n        }\n        return field\n    }),*/\n\n    init() {\n        this._super();\n        this.headers = ['salarytype', 'accrual'];\n        if (this.session.currentUser.userlevel !== '1') this.headers.push('percent');\n        this.form = 'salarytype';\n        this.useSalarytypeV2 = this.Collector.testNeeds(['products.salarytype_v2']);\n        this.salarytypes = this.store.query(this.useSalarytypeV2 ? 'salarytypev2' : 'salarytype', {\n            sideload: true,\n            limit: 'all',\n        });\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumeEvent');\n    },\n\n    async didReceiveAttrs() {\n        set(this, 'periods', await this.getPeriods());\n        setProperties(this, {\n            date: this.periods[0],\n            user: this.session.currentUser.id,\n            project: this.project,\n            worktimegroup: null,\n        });\n        set(this, 'salaryData', this.getSalaryData());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumeEvent');\n    },\n\n    actions: {\n        filterChange(value, field) {\n            if (field && typeof field === 'string') {\n                this.analytics.trackEvent({\n                    category: 'Dashboard',\n                    action: `change ${field} filter`,\n                    label: 'salary-sum widget',\n                });\n                if (!value) set(this, field, null);\n                else set(this, field, value.id);\n            }\n            set(this, 'salaryData', this.getSalaryData());\n        },\n\n        changeDate(value) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `change date filter`,\n                label: 'salary-sum widget',\n            });\n            if (value) set(this, 'date', value);\n            set(this, 'salaryData', this.getSalaryData());\n        },\n\n        changeLayout(layout) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Use ${layout} layout`,\n                label: 'salary-sum widget',\n            });\n\n            this.localstorage.setItem('sumwidget-layout', layout);\n            this.notifyPropertyChange('tableLayout');\n        },\n    },\n\n    async getPeriods() {\n        if (!this.currentSalaryPeriod) await this.setCurrentPeriod();\n        return [\n            {\n                key: 'this_week',\n                id:\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('isoWeek').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_week'),\n            },\n            {\n                key: 'last_week',\n                id:\n                    moment().subtract(1, 'week').startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'week').endOf('isoWeek').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.last_week'),\n            },\n            {\n                key: 'this_month',\n                id:\n                    moment().startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('month').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_month'),\n            },\n            {\n                key: 'last_month',\n                id:\n                    moment().subtract(1, 'month').startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'month').endOf('month').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.last_month'),\n            },\n            {\n                key: 'this_year',\n                id:\n                    moment().startOf('year').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().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, valuefromLS;\n        if (\n            this.get('settings.filters') &&\n            this.get('settings.filters').find((filter) => {\n                return filter.name === 'groupBy' && Ember.isPresent(filter.value);\n            })\n        ) {\n            this.set('groupBy', true);\n        } else {\n            this.set('groupBy', false);\n        }\n        if (this.get('settings.localStorageKey')) {\n            this.set('localStorageKey', this.get('settings.localStorageKey'));\n        }\n        if (this.get('localStorageKey')) {\n            key = this.get('localStorageKey') + '_defaultLimit';\n        } else if (this.get('content.firstObject.constructor.modelName')) {\n            key = this.get('content.firstObject.constructor.modelName') + '_defaultLimit';\n        }\n        this.set('defaultLimitKey', key);\n        valuefromLS = this.get('localStorageWrapper').getUserSetting(key);\n        // support for stupid getUserSetting function .. it returns empty array if value is not found at all\n        isEmptyArray = Ember.typeOf(valuefromLS) === 'array' && valuefromLS.length === 0;\n        if (valuefromLS && !isEmptyArray) {\n            this.set('limit', valuefromLS);\n        } else {\n            if (!this.get('limit')) {\n                Ember.run.next(this, function () {\n                    return this.set('limit', '25');\n                });\n            }\n        }\n        if (this.get('defaultColumns')) {\n            return this.send('sendColumns', this.get('defaultColumns'));\n        }\n    },\n    moveElementInArray: function (obj, col, offset) {\n        var index, newIndex;\n        index = obj.indexOf(col);\n        obj.removeObject(col);\n        newIndex = index + offset;\n        if (newIndex > obj.length) {\n            newIndex = 0;\n        } else if (newIndex < 0) {\n            newIndex = obj.length;\n        }\n        return obj.insertAt(newIndex, col);\n    },\n    createExcel: function (exportParams, base64 = false) {\n        var tmp_rows;\n        Ember.get(this, 'analytics').trackEvent({\n            category: this.form + ' report actions',\n            action: 'Excel-export',\n            label: 'General-report',\n        });\n        tmp_rows = new Em.RSVP.Promise((resolve, reject) => {\n            var content, params;\n            if (this.get('checked').length > 0) {\n                content = this.get('checked');\n                return resolve(content);\n            } else {\n                params = {\n                    limit: 'all',\n                    sideload: true,\n                };\n                if (this.get('settings.filters')) {\n                    this.get('settings.filters').forEach((filter) => {\n                        var add;\n                        // haxx to set q-parameter correctly\n                        if (filter.get('bindto')) {\n                            return (params['q'] = filter.get('value'));\n                        } else if (\n                            this.get('customQueryparams') &&\n                            this.get('customQueryparamsKey') === filter.get('field')\n                        ) {\n                            return (params[this.get('customQueryparams')] = filter.get('value'));\n                        } else if (filter.get('value') && filter.get('subform')) {\n                            add = {};\n                            add[filter.get('field')] = filter.get('value');\n                            return (params[filter.get('form')] = add);\n                        } else if (filter.get('value') && filter.get('field') !== 'status') {\n                            return (params[filter.get('field')] = filter.get('value'));\n                        }\n                    });\n                }\n                if (this.get('settings.showStatus') === 'removed') {\n                    params.row_info_status = 'removed';\n                }\n                if (this.get('settings.sortByColumn')) {\n                    params.order = this.get('settings.sortByColumn');\n                }\n                if (this.get('status') !== 'all') {\n                    params.status = this.get('status');\n                }\n                return this.get('store')\n                    .query(this.get('form'), params)\n                    .then((rows) => {\n                        return resolve(rows);\n                    });\n            }\n        });\n        return tmp_rows.then((rows) => {\n            var columns, filteredColumns, sumRow;\n            filteredColumns = [];\n            columns = [];\n            if (exportParams.template) {\n                filteredColumns = exportParams.template.get('columns').split(',');\n            }\n            sumRow = false;\n            this.set('showLoader', true);\n            return this.possiblyCalculateSumRow(\n                rows,\n                false,\n                exportParams['addSumRow'],\n                this.get('settings.rowSettings.hideCheckbox'),\n            ).then((unformatted_sumrow) => {\n                var excelJSON, filters, form;\n                form = this.get('form');\n                this.get('defaultColumns')\n                    .concat(this.get('extraColumns'))\n                    .forEach((row) => {\n                        if (filteredColumns.length > 0 && filteredColumns.indexOf(row.ext) === -1) {\n                            return;\n                        }\n                        return columns.push(row);\n                    });\n                filters = this.getPdfFilters();\n                sumRow = unformatted_sumrow;\n                excelJSON = this.get('fileExports').createExcelJSONFromForm(\n                    form,\n                    rows,\n                    columns,\n                    filters,\n                    sumRow,\n                );\n                if (base64) {\n                    return this.get('fileExports').createBase64ExcelFromJSON(excelJSON);\n                } else {\n                    return this.get('fileExports')\n                        .createExcelFromJSON(excelJSON)\n                        .then(() => {\n                            this.set('showEmailModal', false);\n                            return this.set('showLoader', false);\n                        });\n                }\n            });\n        });\n    },\n    customQueryparams: Ember.computed(function () {\n        var formFeatures, forms;\n        forms = this.get('Collector').forms();\n        // some form have dash in their name so we need to change them to underscore\n        formFeatures = forms[this.get('form').underscore()].features;\n        if (formFeatures != null && formFeatures.custom_queryparams) {\n            return formFeatures.custom_queryparams;\n        }\n        return false;\n    }),\n    customQueryparamsKey: Ember.computed('customQueryparams', function () {\n        if (!this.get('customQueryparams')) {\n            return;\n        }\n        //Some forms have custom_queryparams divided by : for example pass_start:pass_end\n        if (this.get('customQueryparams').includes(':')) {\n            return this.get('customQueryparams').split(':')[0];\n        } else {\n            return this.get('customQueryparams').split('_')[0];\n        }\n    }),\n    showShareLink: Em.computed('session.currentUser', function () {\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        return this.get('form') === 'presence' && this.get('Collector').testNeeds(['userlevel=5']);\n    }),\n    layoutName: Ember.computed(function () {\n        if (this.get('templatename')) {\n            return this.get('templatename');\n        } else {\n            return 'components/general-report';\n        }\n    }),\n    showPdfExport: true,\n    showPdfExportFull: true,\n    filterMode: false,\n    //    date: moment().format('YYYY-MM-DD')\n    defaultChangeStatus: Em.computed(function () {\n        var obj;\n        obj = {};\n        obj.action = 'approved';\n        obj.btn_class = 'btn-primary';\n        obj.text = this.get('intl').t('report.approve_rows');\n        return obj;\n    }),\n    showDefaultChangeStatus: Ember.computed('canChangeStatus', 'statusTypes', function () {\n        var approvingIsAllowed;\n        if (!this.get('canChangeStatus')) {\n            return false;\n        }\n        approvingIsAllowed = this.get('statusTypes').mapBy('id').indexOf('approved') !== -1;\n        return approvingIsAllowed;\n    }),\n    defaultChangeStatusAction: 'approved',\n    canChangeStatus: Ember.computed(function () {\n        var field;\n        field = collector.getFormObject(this.get('form') + '.status');\n        if (this.get('status') && field) {\n            if (!field.features.readonly) {\n                return true;\n            }\n        }\n        return false;\n    }),\n    statusTypes: Em.computed('form', function () {\n        var c, field, fieldOptions, intl, option, options;\n        if (!this.get('form')) {\n            return [];\n        }\n        c = this.get('Collector');\n        intl = this.get('intl');\n        field = c.field(this.get('form'), 'status');\n        if (field.features.only_options) {\n            fieldOptions = field.features.only_options.split(',');\n        } else {\n            fieldOptions = field.options;\n        }\n        options = (function () {\n            var j, len, results;\n            results = [];\n            for (j = 0, len = fieldOptions.length; j < len; j++) {\n                option = fieldOptions[j];\n                if (intl.exists('status.' + option)) {\n                    results.push({\n                        id: option,\n                        name: intl.t('report.' + option + '_rows'),\n                    });\n                } else {\n                    results.push({\n                        id: option,\n                        name: intl.t('report.change_status') + option,\n                    });\n                }\n            }\n            return results;\n        })();\n        return options;\n    }),\n    offset: null,\n    didInsertElement: function () {\n        return this.set('offset', this.get('limit') * this.get('page'));\n    },\n    page: 1,\n    pageObserver: function () {\n        if (this.get('page') <= 0) {\n            //            @set 'currentController.page',1\n            return this.set('page', 1);\n        }\n    }.observes('page'),\n    pageCount: Ember.computed('content.meta.count', 'limit', 'count', function () {\n        var count;\n        count = Ember.isPresent(this.get('count'))\n            ? this.get('count')\n            : this.get('content.meta.count');\n        return Math.ceil(count / this.get('limit'));\n    }),\n    pages: Ember.computed('limit', 'content', function () {\n        var count, limit, pages;\n        count = Ember.isPresent(this.get('count'))\n            ? this.get('count')\n            : this.get('content.meta.count');\n        limit = this.get('limit');\n        pages = Math.ceil(count / limit);\n        if (pages > 0) {\n            return pages;\n        }\n        return false;\n    }),\n    columns: Ember.on(\n        'init',\n        Ember.observer(\n            'form',\n            'content.[]',\n            'intl.locale',\n            'groupBy',\n            'currentTemplate',\n            function () {\n                var _currentTemplate,\n                    column,\n                    columns,\n                    defaultColumns,\n                    extraColumns,\n                    field,\n                    form,\n                    form_objects,\n                    globalHide,\n                    i,\n                    intl,\n                    j,\n                    k,\n                    key,\n                    len,\n                    name,\n                    obj,\n                    objects,\n                    orderable,\n                    ref,\n                    showColumnsFromLS,\n                    shownColumns,\n                    static_fields,\n                    summableFieldTypes,\n                    summableFields,\n                    supportForOldFormat,\n                    tmpTemplate,\n                    translatedName,\n                    uses_mongo;\n                form = this.get('form');\n                shownColumns = [];\n                uses_mongo = this.get('Collector').uses_mongo(form);\n                // TODO: Hide some globally stupid fields that probably shouldn't even come from api\n                globalHide = ['send_sms', 'linker', 'user_linker', 'device'];\n                if (this.get('form_objects')) {\n                    objects = this.get('form_objects');\n                } else {\n                    objects = collector.getFormObjects(form);\n                }\n                if (this.get('type') === 'group') {\n                    objects = this.groupObjects(objects);\n                }\n                if (!objects) {\n                    return;\n                }\n                if (this.get('settings.localStorageKey')) {\n                    this.set('localStorageKey', this.get('settings.localStorageKey'));\n                }\n                if (this.get('localStorageKey')) {\n                    key = this.get('localStorageKey') + '_defaultColumns';\n                } else if (this.get('content.firstObject.constructor.modelName')) {\n                    key = this.get('content.firstObject.constructor.modelName') + '_defaultColumns';\n                }\n                supportForOldFormat = [];\n                if (localStorage.getItem(key)) {\n                    supportForOldFormat = JSON.parse(localStorage.getItem(key));\n                }\n                showColumnsFromLS = this.get('localStorageWrapper').getUserSetting(\n                    key,\n                    supportForOldFormat,\n                );\n                if (showColumnsFromLS && showColumnsFromLS.length > 0 && key) {\n                    shownColumns = showColumnsFromLS;\n                }\n                // skip default showColumns (and show all) if there are no columns defined in localstorage\n                //else if @get 'showColumns'\n                //    shownColumns = @get 'showColumns'\n\n                // save currentTemplate to localstorage so we can use it\n                _currentTemplate =\n                    this.get('content.firstObject.constructor.modelName') + '_currentTemplate';\n                if (this.get('currentTemplate')) {\n                    this.get('localStorageWrapper').setUserSetting(_currentTemplate, {\n                        columns: this.get('currentTemplate.columns'),\n                        name: this.get('currentTemplate.name'),\n                    });\n                    shownColumns = this.get('currentTemplate.columns').split(',');\n                }\n                // if currentTemplate is saved to localstorage, use it\n                if (this.get('localStorageWrapper').getUserSetting(_currentTemplate).columns) {\n                    tmpTemplate = this.get('localStorageWrapper').getUserSetting(_currentTemplate);\n                    shownColumns = tmpTemplate.columns.split(',');\n                }\n                if (shownColumns.length <= 0) {\n                    shownColumns = [];\n                    i = 0;\n                    for (k in objects) {\n                        obj = objects[k];\n                        i++;\n                        shownColumns.push(k);\n                    }\n                }\n                //@set('showColumns', shownColumns)\n                columns = Em.A([]);\n                defaultColumns = Em.A([]);\n                extraColumns = Em.A([]);\n                summableFieldTypes = this.get('summableFieldTypes');\n                summableFields = Em.A([]);\n                for (name in objects) {\n                    obj = objects[name];\n                    if (\n                        obj.features.hide_column ||\n                        obj.features.hide_tt4 ||\n                        name.slice(-6) === '_minus'\n                    ) {\n                        continue;\n                    }\n                    if (indexOf1.call(globalHide, name) >= 0) {\n                        continue;\n                    }\n                    if (this.get('settings.hideColumns')) {\n                        if (indexOf1.call(this.get('settings.hideColumns'), name) >= 0) {\n                            continue;\n                        }\n                    }\n                    translatedName = obj.name || this.get('intl').t('report.' + form + '.' + name);\n                    if (indexOf1.call(shownColumns, name) >= 0) {\n                    } else {\n                        //do not put defaultColumns here\n                        //defaultColumns.pushObject {name: translatedName, ext: name, obj: obj}\n                        if (\n                            !(\n                                name.indexOf('_minus', name.length - 6) !== -1 ||\n                                obj.features.hide_column\n                            )\n                        ) {\n                            if (obj.type !== 'multiselect_tmp') {\n                                if (!obj.ext) {\n                                    obj.ext = name;\n                                }\n                                extraColumns.pushObject({\n                                    name: translatedName,\n                                    ext: name,\n                                    obj: obj,\n                                });\n                            }\n                        }\n                    }\n                    columns.pushObject({\n                        name: translatedName,\n                        ext: name,\n                    });\n                    if (\n                        summableFieldTypes &&\n                        ((ref = obj.type), indexOf1.call(summableFieldTypes, ref) >= 0)\n                    ) {\n                        summableFields.pushObject({\n                            ext: name,\n                            type: obj.type,\n                        });\n                    }\n                }\n                // Add static columns here, like row_info stuff that is on every record\n                intl = this.get('intl');\n                static_fields = {\n                    'row_info.created': {\n                        name: intl.t('general.row_info.created'),\n                        ext: 'row_info.created',\n                        obj: {\n                            type: 'row_info',\n                            features: {},\n                            ext: 'row_info.created',\n                        },\n                        orderable: true,\n                    },\n                };\n                for (key in static_fields) {\n                    field = static_fields[key];\n                    if (indexOf1.call(shownColumns, key) >= 0) {\n                        continue;\n                    }\n                    extraColumns.pushObject(field);\n                    columns.pushObject(field);\n                }\n                // new way of showing columns\n                for (j = 0, len = shownColumns.length; j < len; j++) {\n                    column = shownColumns[j];\n                    if (static_fields[column] != null) {\n                        defaultColumns.pushObject(static_fields[column]);\n                        columns.pushObject(field);\n                        continue;\n                    }\n                    if (indexOf1.call(globalHide, column) >= 0) {\n                        continue;\n                    }\n                    if (this.get('settings.hideColumns')) {\n                        if (indexOf1.call(this.get('settings.hideColumns'), column) >= 0) {\n                            continue;\n                        }\n                    }\n                    // if form_objects are given as parameter, use them\n                    if (this.get('form_objects')) {\n                        form_objects = this.get('form_objects');\n                        obj = form_objects[column];\n                        translatedName = this.get('intl').t('report.' + form + '.' + column);\n                        if (obj.translation) {\n                            translatedName = this.get('intl').t(obj.translation);\n                        }\n                    } else if (column.indexOf('.') !== -1) {\n                        obj = collector.getFormObject(column);\n                        translatedName = this.get('intl').t('report.' + column);\n                    } else {\n                        obj = collector.getFormObject(form + '.' + column);\n                        translatedName = obj.name || this.getTranslation(form, column);\n                    }\n                    if (!obj) {\n                        continue;\n                    }\n                    if (\n                        obj.features.hide_column ||\n                        obj.features.hide_tt4 ||\n                        column.slice(-6) === '_minus'\n                    ) {\n                        continue;\n                    }\n                    if (uses_mongo && obj.type === 'database') {\n                        orderable = false;\n                    } else {\n                        orderable = true;\n                    }\n                    if (obj) {\n                        if (!obj.ext) {\n                            obj.ext = column;\n                        }\n                        defaultColumns.pushObject({\n                            name: htmlSafe(sanitize(translatedName)),\n                            ext: column,\n                            obj: obj,\n                            orderable: orderable,\n                        });\n                        columns.pushObject({\n                            name: htmlSafe(sanitize(translatedName)),\n                            ext: column,\n                        });\n                    }\n                }\n                if (this.get('groupBy')) {\n                    [defaultColumns, extraColumns] = this.getGroupColumns(\n                        defaultColumns,\n                        extraColumns,\n                    );\n                }\n                this.set('defaultColumns', defaultColumns);\n                this.set('extraColumns', extraColumns);\n                this.set('summableFields', summableFields);\n                return columns;\n            },\n        ),\n    ),\n    getGroupColumns: function (defaultColumns, extraColumns) {\n        var columnsToExtra, columnsToShow, defaultColumnsToShow;\n        if (!this.get('groupBy') || !this.get('content.firstObject')) {\n            return [defaultColumns, extraColumns];\n        }\n        defaultColumnsToShow = Object.keys(this.get('content.firstObject'));\n        columnsToShow = defaultColumnsToShow.map((ext) => {\n            return defaultColumns.find((column) => {\n                return ext === column.ext;\n            });\n        });\n        columnsToExtra = defaultColumnsToShow.map((ext) => {\n            return extraColumns.find((column) => {\n                return ext === column.ext;\n            });\n        });\n        columnsToShow = columnsToShow.compact().uniq();\n        columnsToExtra = columnsToExtra.compact().uniq();\n        return [columnsToShow, columnsToExtra];\n    },\n    getTranslation: function (form, column) {\n        if (form.substring(0, 18) === 'measurement-custom') {\n            // little hack to support measurement-custom form headers\n            form = 'tr';\n        }\n        //return @get('intl').t 'report.'+form+'.'+column\n        return this.get('Collector').getBestTranslation(form, column);\n    },\n    groupObjects: function (all_objects) {\n        var content, first_row, ret;\n        content = this.get('content');\n        if (content.length < 1) {\n            return null;\n        }\n        first_row = content[0];\n        ret = {};\n        $.each(all_objects, function (key, item) {\n            if (key in first_row) {\n                return (ret[key] = item);\n            }\n        });\n        return ret;\n    },\n    setLocalStorageColumns: function () {\n        var columns, key;\n        if (this.get('groupBy')) {\n            //If groupBy then dont set defaultColumns to local storage so they can be restored back when groupBy filter is removed\n            return;\n        }\n        //return if @get('currentTemplate') #Don't save template columns to LS so we can return to old state\n        columns = [];\n        if (this.get('localStorageKey')) {\n            key = this.get('localStorageKey') + '_defaultColumns';\n        } else if (this.get('content.firstObject.constructor.modelName')) {\n            key = this.get('content.firstObject.constructor.modelName') + '_defaultColumns';\n        }\n        this.get('defaultColumns').forEach(function (obj) {\n            return columns.push(obj.ext);\n        });\n        if (key) {\n            return this.get('localStorageWrapper').setUserSetting(key, columns);\n        }\n    }.observes('defaultColumns.[]'),\n    dates: Ember.computed('content', function () {\n        var dates, item, k, model, ret;\n        if (this.get('sortByDates')) {\n            model = this.get('content').sortBy('date');\n            dates = Em.A({});\n            model.forEach(function (item) {\n                var date;\n                date = item.get('date');\n                if (dates[date]) {\n                    return dates[date].rows.pushObject(item);\n                } else {\n                    return (dates[date] = {\n                        date: item.get('date'),\n                        rows: [item],\n                    });\n                }\n            });\n            ret = Em.A([]);\n            for (k in dates) {\n                item = dates[k];\n                ret.pushObject(item);\n            }\n            return ret;\n        }\n    }),\n    sumRow: Em.computed('content.[]', 'defaultColumns.[]', 'checked.[]', function () {\n        var columns, model, self, sortByDate, sumRow, summableFields, sums, unformatted_sumRow;\n        self = this;\n        sortByDate = null;\n        if (this.get('form') === 'abcense') {\n            sortByDate = this.get('content').sortBy('startdate');\n        } else {\n            sortByDate = this.get('content').sortBy('date');\n        }\n        if (this.get('checked.length') > 0) {\n            model = this.get('checked');\n        } else {\n            model = Ember.isPresent(this.get('content')) ? sortByDate : [];\n        }\n        columns = this.get('defaultColumns');\n        // TODO Should rewrite avi report to not use this general-report component\n        if (this.get('form') === 'avi') {\n            return;\n        }\n        if (!columns) {\n            return;\n        }\n        if (Ember.get(model, 'length') === 0) {\n            return;\n        }\n        summableFields = this.get('summableFields');\n        sumRow = Em.A([]);\n        unformatted_sumRow = Em.A([]);\n        if (!this.get('settings.rowSettings.hideCheckbox')) {\n            sumRow.pushObject('');\n            unformatted_sumRow.pushObject('');\n        }\n        sums = {};\n        model.forEach(function (item) {\n            return summableFields.forEach(function (field) {\n                var cell;\n                if (!(field.ext in sums)) {\n                    sums[field.ext] = 0;\n                }\n                if (item.get == null) {\n                    return;\n                }\n                cell = item.get(field.ext);\n                if (field.type === 'checkbox') {\n                    if (!sums[field.ext]) {\n                        sums[field.ext] = [0, 0];\n                    }\n                    if (item.get(field.ext)) {\n                        return sums[field.ext][0]++;\n                    } else {\n                        return sums[field.ext][1]++;\n                    }\n                } else if (field.type === 'dropdown_values') {\n                    if (!sums[field.ext]) {\n                        sums[field.ext] = [];\n                    }\n                    if (cell) {\n                        return sums[field.ext].push(cell);\n                    }\n                } else if (field.type === 'date') {\n                    if (Ember.typeOf(cell) === 'string' && cell.substring(0, 6) === 'count:') {\n                        return (sums[field.ext] += parseInt(cell.substring(6)));\n                    } else {\n                        sums[field.ext] = '';\n                    }\n                } else {\n                    return (sums[field.ext] += cell);\n                }\n            });\n        });\n        columns.forEach(function (column) {\n            var dropdownSums, field, sumToFixed;\n            field = column.ext;\n            dropdownSums = [];\n            if (column.obj.type === 'checkbox') {\n                sumRow.pushObject(\n                    self.Collector.format(true, column.obj, null, model) +\n                        ': ' +\n                        sums[field][0] +\n                        ' / ' +\n                        self.Collector.format(false, column.obj, null, model) +\n                        ': ' +\n                        sums[field][1],\n                );\n                return unformatted_sumRow.pushObject(\n                    self.Collector.format(true, column.obj, null, model) +\n                        ': ' +\n                        sums[field][0] +\n                        ' / ' +\n                        self.Collector.format(false, column.obj, null, model) +\n                        ': ' +\n                        sums[field][1],\n                );\n            } else if (field in sums) {\n                if (\n                    column.obj.type === 'number' &&\n                    !isNaN(sums[field]) &&\n                    !Number.isInteger(sums[field])\n                ) {\n                    sumToFixed = sums[field].toFixed(1);\n                    sumRow.pushObject(self.Collector.format(sumToFixed, column.obj, null, model));\n                    //unformatted_sumRow.pushObject self.Collector.format(sums[field], column.obj, null, model, 'sumrow').toFixed(1)\n                    //unformatted_sumRow.pushObject sums[field]\n                    return unformatted_sumRow.pushObject(\n                        self.Collector.format(sumToFixed, column.obj, null, model, 'sumrow'),\n                    );\n                } else if (column.obj.type === 'dropdown_values') {\n                    sums[field].forEach(function (opt) {\n                        return (dropdownSums[opt] = (dropdownSums[opt] || 0) + 1);\n                    });\n                    sumRow.pushObject(\n                        self.Collector.format(\n                            dropdownSums,\n                            column.obj,\n                            null,\n                            model,\n                            false,\n                            self.get('form'),\n                        ),\n                    );\n                    return unformatted_sumRow.pushObject(\n                        self.Collector.format(\n                            dropdownSums,\n                            column.obj,\n                            null,\n                            model,\n                            'sumrow',\n                            self.get('form'),\n                        ),\n                    );\n                } else {\n                    sumRow.pushObject(self.Collector.format(sums[field], column.obj, null, model));\n                    //unformatted_sumRow.pushObject self.Collector.format(sums[field], column.obj, null, model, 'sumrow')\n                    return unformatted_sumRow.pushObject(sums[field]);\n                }\n            } else {\n                sumRow.pushObject('');\n                return unformatted_sumRow.pushObject('');\n            }\n        });\n        this.set('unformatted_sumRow', unformatted_sumRow);\n        return sumRow;\n    }),\n    possiblyCalculateSumRow: function (\n        content,\n        format,\n        calculateSumRow = false,\n        hideFirstCheckbox = false,\n    ) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var columns, model, self, sortByDate, sumRow, summableFields, sums, unformatted_sumRow;\n            if (!calculateSumRow) {\n                resolve(false);\n            }\n            self = this;\n            sortByDate = null;\n            if (this.get('form') === 'abcense') {\n                sortByDate = content.sortBy('startdate');\n            } else {\n                sortByDate = content.sortBy('date');\n            }\n            if (this.get('checked.length') > 0) {\n                model = this.get('checked');\n            } else {\n                model = Ember.isPresent(content) ? sortByDate : [];\n            }\n            columns = this.get('defaultColumns');\n            // TODO Should rewrite avi report to not use this general-report component\n            if (this.get('form') === 'avi') {\n                return;\n            }\n            if (!columns) {\n                return;\n            }\n            if (Ember.get(model, 'length') === 0) {\n                return;\n            }\n            summableFields = this.get('summableFields');\n            sumRow = Em.A([]);\n            unformatted_sumRow = Em.A([]);\n            if (!hideFirstCheckbox) {\n                sumRow.pushObject('');\n                unformatted_sumRow.pushObject('');\n            }\n            sums = {};\n            model.forEach(function (item) {\n                return summableFields.forEach(function (field) {\n                    var cell;\n                    if (!(field.ext in sums)) {\n                        sums[field.ext] = 0;\n                    }\n                    if (item.get == null) {\n                        return;\n                    }\n                    cell = item.get(field.ext);\n                    if (field.type === 'checkbox') {\n                        if (!sums[field.ext]) {\n                            sums[field.ext] = [0, 0];\n                        }\n                        if (item.get(field.ext)) {\n                            return sums[field.ext][0]++;\n                        } else {\n                            return sums[field.ext][1]++;\n                        }\n                    } else if (field.type === 'dropdown_values') {\n                        if (!sums[field.ext]) {\n                            sums[field.ext] = [];\n                        }\n                        if (cell) {\n                            return sums[field.ext].push(cell);\n                        }\n                    } else if (field.type === 'date') {\n                        if (Ember.typeOf(cell) === 'string' && cell.substring(0, 6) === 'count:') {\n                            return (sums[field.ext] += parseInt(cell.substring(6)));\n                        } else {\n                            sums[field.ext] = '';\n                        }\n                    } else {\n                        return (sums[field.ext] += cell);\n                    }\n                });\n            });\n            columns.forEach(function (column) {\n                var dropdownSums, field;\n                field = column.ext;\n                dropdownSums = [];\n                if (column.obj.type === 'checkbox') {\n                    sumRow.pushObject(\n                        self.Collector.format(true, column.obj, null, model) +\n                            ': ' +\n                            sums[field][0] +\n                            ' / ' +\n                            self.Collector.format(false, column.obj, null, model) +\n                            ': ' +\n                            sums[field][1],\n                    );\n                    return unformatted_sumRow.pushObject(\n                        self.Collector.format(true, column.obj, null, model) +\n                            ': ' +\n                            sums[field][0] +\n                            ' / ' +\n                            self.Collector.format(false, column.obj, null, model) +\n                            ': ' +\n                            sums[field][1],\n                    );\n                } else if (field in sums) {\n                    if (\n                        column.obj.type === 'number' &&\n                        !isNaN(sums[field]) &&\n                        !Number.isInteger(sums[field])\n                    ) {\n                        sumRow.pushObject(\n                            parseFloat(\n                                self.Collector.format(sums[field], column.obj, null, model),\n                            ).toFixed(1),\n                        );\n                        //unformatted_sumRow.pushObject self.Collector.format(sums[field], column.obj, null, model, 'sumrow').toFixed(1)\n                        //unformatted_sumRow.pushObject sums[field]\n                        return unformatted_sumRow.pushObject(\n                            parseFloat(\n                                self.Collector.format(\n                                    sums[field],\n                                    column.obj,\n                                    null,\n                                    model,\n                                    'sumrow',\n                                ),\n                            ).toFixed(1),\n                        );\n                    } else if (column.obj.type === 'dropdown_values') {\n                        sums[field].forEach(function (opt) {\n                            return (dropdownSums[opt] = (dropdownSums[opt] || 0) + 1);\n                        });\n                        sumRow.pushObject(\n                            self.Collector.format(\n                                dropdownSums,\n                                column.obj,\n                                null,\n                                model,\n                                false,\n                                self.get('form'),\n                            ),\n                        );\n                        return unformatted_sumRow.pushObject(\n                            self.Collector.format(\n                                dropdownSums,\n                                column.obj,\n                                null,\n                                model,\n                                'sumrow',\n                                self.get('form'),\n                            ),\n                        );\n                    } else {\n                        sumRow.pushObject(\n                            self.Collector.format(sums[field], column.obj, null, model),\n                        );\n                        //unformatted_sumRow.pushObject self.Collector.format(sums[field], column.obj, null, model, 'sumrow')\n                        return unformatted_sumRow.pushObject(sums[field]);\n                    }\n                } else {\n                    sumRow.pushObject('');\n                    return unformatted_sumRow.pushObject('');\n                }\n            });\n            if (format) {\n                return resolve(sumRow);\n            } else {\n                console.log(unformatted_sumRow);\n                return resolve(unformatted_sumRow);\n            }\n        });\n    },\n    hasPreviousPage: Ember.computed('offset', 'page', 'content', 'limit', function () {\n        return this.get('offset') !== 0;\n    }),\n    hasNextPage: Ember.computed('offset', 'limit', 'page', 'content', function () {\n        return this.get('offset') + this.get('limit') < this.get('content.meta.count');\n    }),\n    checked: Em.on('init', function () {\n        return this.set('checked', Em.A([]));\n    }),\n    checkClass: Em.computed('checked.[]', function () {\n        if (this.get('checked.length') === 0) {\n            return 'unchecked';\n        } else if (this.get('checked.length') === this.get('content.length')) {\n            return 'checked';\n        } else {\n            return 'unchecked';\n        }\n    }),\n    typeObserver: function () {\n        if (this.get('type') === 'group') {\n            return this.set('showCheckbox', false);\n        }\n    }.observes('type'),\n    getExportCols: function (row, cols) {\n        var col, j, len, obj;\n        obj = Em.Object.create();\n        for (j = 0, len = cols.length; j < len; j++) {\n            col = cols[j];\n            obj.set(col, row[col]);\n        }\n        return obj;\n    },\n    showGpsButton: Ember.computed('_showGpsButton', 'defaultColumns.[]', function () {\n        var defaultfields, extrafields, gpsfound;\n        if (this.get('_showGpsButton')) {\n            return true;\n        }\n        gpsfound = false;\n        defaultfields = this.get('defaultColumns');\n        if (!defaultfields) {\n            return;\n        }\n        if (this.get('form') === !'worktime') {\n            return;\n        }\n        defaultfields.forEach(function (field) {\n            if (field.ext === 'location' || field.ext === 'end_location') {\n                return (gpsfound = true);\n            }\n        });\n        extrafields = this.get('extraColumns');\n        extrafields.forEach(function (field) {\n            if (field.ext === 'location' || field.ext === 'end_location') {\n                return (gpsfound = true);\n            }\n        });\n        return gpsfound;\n    }),\n    selectedRows: Ember.computed('checked.[]', function () {\n        return this.get('checked').mapBy('id').join(',');\n    }),\n    updateMarkers: Em.observer('checked.[]', function () {\n        if (this.get('showGpsMap')) {\n            return this.setMapMarkers();\n        }\n    }),\n    setProjectMarkers: function (projects) {\n        var d, locs;\n        d = new $.Deferred();\n        locs = [];\n        projects.forEach((project) => {\n            var id, loc, projLoc;\n            if (project.get('location_map')) {\n                id = project.get('id');\n                projLoc = project.get('location_map');\n                loc = {};\n                loc.project = JSON.parse(projLoc);\n                loc.project.label = project.get('name');\n                return locs.push(loc);\n            }\n        });\n        this.set('projectmarkers', locs);\n        d.resolve();\n        return d;\n    },\n    setWorktimeMarkers: function (rows) {\n        var d, i, locs, totalLength;\n        d = new $.Deferred();\n        locs = [];\n        i = 0;\n        totalLength = rows.get('length');\n        rows.forEach((row) => {\n            var creator, name, project, user;\n            if (!row.get('location') && !row.get('end_location') && !row.get('location_map')) {\n                totalLength--;\n                return;\n            }\n            project = row.get('project');\n            user = row.get('user');\n            if (user) {\n                name = user.get('lastname') + ' ' + user.get('firstname');\n            } else {\n                creator = row.get('creator');\n                name = creator.get('lastname') + ' ' + creator.get('firstname');\n            }\n            return this.get('store')\n                .query('project', {\n                    id: project.get('id'),\n                })\n                .then((projects) => {\n                    var loc, projLoc, record;\n                    record = projects.get('firstObject');\n                    projLoc = record.get('location_map');\n                    loc = {};\n                    if (row.get('location')) {\n                        loc.wStartLoc = JSON.parse(row.get('location'));\n                    }\n                    loc.wLabel = name;\n                    if (row.get('end_location')) {\n                        loc.wEndLoc = JSON.parse(row.get('end_location'));\n                    }\n                    if (projLoc) {\n                        loc.project = JSON.parse(projLoc);\n                        loc.project.label = project.get('name');\n                    }\n                    locs.push(loc);\n                    if (++i === totalLength) {\n                        this.set('wtmarkers', locs);\n                        return d.resolve();\n                    }\n                });\n        });\n        return d;\n    },\n    setMapMarkers: function () {\n        var rows;\n        //get data from checked (if there is checked)\n        if (this.get('checked').length > 0) {\n            rows = this.get('checked');\n        } else {\n            rows = this.get('content');\n        }\n        if (rows.get('firstObject.project')) {\n            //timetracker list route\n            return this.setWorktimeMarkers(rows); //projects route\n        } else {\n            return this.setProjectMarkers(rows);\n        }\n    },\n    moreLinksClass: Em.computed('checked.[]', function () {\n        if (this.get('checked.length') === 0) {\n            return 'disabled';\n        }\n    }),\n    canLock: Em.computed(function () {\n        return this.get('Collector').testNeeds(['userlevel=5']);\n    }),\n    getPdfFilters: function (rows) {\n        var c, filter, filterName, filterValue, j, len, pdf_filters_body, ref, value, values;\n        c = this.get('Collector');\n        if (Em.isEmpty(this.get('settings.filters'))) {\n            return [];\n        }\n        pdf_filters_body = [];\n        ref = this.get('settings.filters');\n        for (j = 0, len = ref.length; j < len; j++) {\n            filter = ref[j];\n            if (filter.get('value') && filter.get('name') !== 'groupBy') {\n                if (Ember.isArray(filter.get('value')) && filter.get('value.length') === 0) {\n                    continue;\n                }\n                if (filter.get('type') === 'database') {\n                    if (typeof filter.get('value') !== 'string') {\n                        value = [];\n                    } else {\n                        value = filter.get('value').split(',');\n                    }\n                } else {\n                    value = filter.get('value');\n                }\n                if (filter.get('bindto') && !filter.get('field')) {\n                    filterValue = value;\n                    filterName = this.get('intl').t('filters.free_search');\n                } else {\n                    if (Ember.isArray(value)) {\n                        values = '';\n                        value.forEach(function (id, index) {\n                            id = parseInt(id);\n                            values += c._format_(\n                                id,\n                                filter.get('form'),\n                                filter.get('field'),\n                                'pdf',\n                                rows,\n                            );\n                            if (index + 1 < value.length) {\n                                return (values += ', ');\n                            }\n                        });\n                        filterValue = values;\n                    } else {\n                        filterValue = c._format_(\n                            value,\n                            filter.get('form'),\n                            filter.get('field'),\n                            'pdf',\n                            rows,\n                        );\n                    }\n                    filterName = this.get('intl').t(filter.get('form') + '.' + filter.get('name'));\n                }\n                if (filterValue != null && filterValue) {\n                    filterValue = filterValue;\n                }\n                //if empty name (own fields), get name from collector service\n                if (Em.isEmpty(filterName)) {\n                    filterName = c.field(filter.get('form'), filter.get('field')).translated_name;\n                }\n                if (this.get('full_pdf_export')) {\n                    pdf_filters_body.push([\n                        {\n                            text: filterName + ': ' + filterValue,\n                            style: 'headertext',\n                        },\n                    ]);\n                } else {\n                    pdf_filters_body.push([filterName + ':', filterValue]);\n                }\n            }\n        }\n        if (pdf_filters_body.length && this.get('full_pdf_export')) {\n            //add some margin between filters and rest of the pdf\n            pdf_filters_body.push([\n                {\n                    text: '',\n                    style: 'marginTop',\n                },\n            ]);\n        }\n        return pdf_filters_body;\n    },\n    littleBitUglyPdfExportMethod: function (\n        format = null,\n        includeAllPages = false,\n        topHeader = false,\n        exportParams,\n    ) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var getImageUri, pdf_filters, self, store;\n            self = this;\n            store = this.get('store');\n            this.set('full_pdf_export', false);\n            pdf_filters = null;\n            getImageUri = function (value, index) {\n                var d, img;\n                d = new $.Deferred();\n                img = new Image();\n                img.onload = function () {\n                    var canvas, ctx, dataUrl;\n                    canvas = document.createElement('canvas');\n                    canvas.width = this.width;\n                    canvas.height = this.height;\n                    ctx = canvas.getContext('2d');\n                    ctx.drawImage(img, 0, 0);\n                    dataUrl = canvas.toDataURL();\n                    return d.resolve({\n                        data: dataUrl,\n                        index: index,\n                    });\n                };\n                img.setAttribute('crossOrigin', 'anonymous');\n                img.src = config.APP.COLLECTOR_API_URL + '/' + value.thumb;\n                return d;\n            };\n            return this.Collector.getLogo().then((logo) => {\n                var columns,\n                    company,\n                    d,\n                    filteredColumns,\n                    get_status_info,\n                    pdf_output,\n                    pdf_output_last,\n                    report_name_text,\n                    row_ids,\n                    templateColumnsNotInDefault,\n                    title_row,\n                    tmp_rows,\n                    widths;\n                company = self.get('session.currentUser.company');\n                if (company == null) {\n                    company = '';\n                }\n                report_name_text = company;\n                pdf_output = [];\n                pdf_output_last = [];\n                //title row\n                title_row = [];\n                columns = [];\n                widths = [];\n                row_ids = [];\n                filteredColumns = [];\n                get_status_info = false;\n                if (exportParams.template) {\n                    filteredColumns = exportParams.template.get('columns').split(',');\n                }\n                templateColumnsNotInDefault = this.get('extraColumns').filter((column) => {\n                    return filteredColumns.includes(Ember.get(column, 'ext'));\n                });\n                this.get('defaultColumns')\n                    .concat(templateColumnsNotInDefault)\n                    .forEach(function (row) {\n                        var ref, status_last_changed, title_text;\n                        if (filteredColumns.length > 0 && filteredColumns.indexOf(row.ext) === -1) {\n                            return;\n                        }\n                        columns.push(row.obj);\n                        if (\n                            (ref = Em.get(row, 'obj.type')) === 'textbox' ||\n                            ref === 'textarea' ||\n                            ref === 'textarea_varchar'\n                        ) {\n                            widths.push(80);\n                        } else {\n                            widths.push('auto');\n                        }\n                        if (row.name.string != null) {\n                            title_row.push(row.name.string);\n                        } else {\n                            title_row.push(row.name);\n                        }\n                        if (row.obj.type === 'status' && Ember.get(exportParams, 'statusInfo')) {\n                            get_status_info = true;\n                            status_last_changed = {\n                                type: 'textbox',\n                                ext: 'status_last_changed',\n                                clickable: false,\n                            };\n                            columns.push(status_last_changed);\n                            widths.push('auto');\n                            title_text = self.get('intl').t('export.pdf.status_last_change');\n                            return title_row.push(title_text.toString());\n                        }\n                    });\n                pdf_output.push(title_row);\n                d = $.Deferred();\n                tmp_rows = new Em.RSVP.Promise((resolve, reject) => {\n                    var key, param, params, ref;\n                    //d = $.Deferred();\n                    if (self.get('checked').length > 0 && !includeAllPages) {\n                        return resolve(self.get('checked'));\n                    } else {\n                        params = {\n                            limit: 'all',\n                            sideload: true,\n                        };\n                        // support for additional query-params\n                        if (exportParams.extraParams) {\n                            ref = exportParams.extraParams;\n                            for (key in ref) {\n                                param = ref[key];\n                                params[key] = param;\n                            }\n                        }\n                        if (self.get('settings.filters')) {\n                            self.get('settings.filters').forEach(function (filter) {\n                                if (filter.get('value') && filter.get('field') !== 'status') {\n                                    if (filter.get('bindto') && !filter.get('field')) {\n                                        return (params[filter.get('bindto')] = filter.get('value'));\n                                    } else if (\n                                        filter.get('form') !== self.get('form').underscore()\n                                    ) {\n                                        return (params[\n                                            filter.get('form').concat('[', filter.get('field'), ']')\n                                        ] = filter.get('value'));\n                                    } else if (\n                                        self.get('customQueryparams') &&\n                                        self.get('customQueryparamsKey') === filter.get('field')\n                                    ) {\n                                        return (params[self.get('customQueryparams')] =\n                                            filter.get('value'));\n                                    } else {\n                                        return (params[filter.get('field')] = filter.get('value'));\n                                    }\n                                }\n                            });\n                        }\n                        if (self.get('settings.sortByColumn')) {\n                            params.order = self.get('settings.sortByColumn');\n                        }\n                        // when data is grouped always use the grouping as order .. copied from app\\pods\\timetracker\\worktime-list\\route.coffee\n                        if (params.groupBy) {\n                            params.order = params.groupBy;\n                        }\n                        if (self.get('status') !== 'all') {\n                            params.status = self.get('status');\n                        }\n                        return self\n                            .get('store')\n                            .query(self.get('form'), params)\n                            .then((rows) => {\n                                return resolve(rows);\n                            });\n                    }\n                });\n                tmp_rows.then(\n                    (rows) => {\n                        var statuspromise;\n                        if (get_status_info) {\n                            row_ids = rows.mapBy('id');\n                            statuspromise = self.get('Collector').ttapi({\n                                url: 'get_status_info',\n                                method: 'post',\n                                data: {\n                                    ids: row_ids,\n                                    form: self.get('form'),\n                                },\n                            });\n                        } else {\n                            statuspromise = new Em.RSVP.Promise((resolve) => {\n                                return resolve();\n                            });\n                        }\n                        return statuspromise.then((statusrows) => {\n                            var pdf_filters_body;\n                            // add filters to pdf-page\n                            pdf_filters_body = self.getPdfFilters(rows);\n                            if (pdf_filters_body.length) {\n                                pdf_filters = {\n                                    table: {\n                                        body: pdf_filters_body,\n                                    },\n                                    layout: 'noBorders',\n                                };\n                            }\n                            rows.forEach(function (row) {\n                                var statusrow;\n                                if (typeof row.getProperties !== 'function') {\n                                    row = Em.Object.create(row);\n                                }\n                                if (get_status_info) {\n                                    statusrow = statusrows[row.id];\n                                    if (statusrow) {\n                                        row.set(\n                                            'status_last_changed',\n                                            moment(statusrow.datetime).format('L') +\n                                                ' ' +\n                                                moment(statusrow.datetime).format('LT') +\n                                                '\\n' +\n                                                statusrow.user,\n                                        );\n                                    } else {\n                                        row.set('status_last_changed', '');\n                                    }\n                                }\n                                if (\n                                    exportParams.imgLocation != null &&\n                                    exportParams.imgLocation === 'afterReport'\n                                ) {\n                                    pdf_output.push(\n                                        self.formatCollectorFieldsToPdfArray(\n                                            columns,\n                                            row,\n                                            'row',\n                                            false,\n                                            false,\n                                            false,\n                                            'thumbnails',\n                                        ),\n                                    );\n                                    return pdf_output_last.push(\n                                        self.formatImagesToPdf(columns, row, true),\n                                    );\n                                } else if (exportParams.imgLocation != null) {\n                                    return pdf_output.push(\n                                        self.formatCollectorFieldsToPdfArray(\n                                            columns,\n                                            row,\n                                            'row',\n                                            false,\n                                            false,\n                                            false,\n                                            exportParams.imgLocation,\n                                        ),\n                                    );\n                                } else {\n                                    return pdf_output.push(\n                                        self.formatCollectorFieldsToPdfArray(\n                                            columns,\n                                            row,\n                                            'row',\n                                            false,\n                                            false,\n                                            false,\n                                            'showImages',\n                                        ),\n                                    );\n                                }\n                            });\n                            return Em.RSVP.Promise.all(pdf_output).then(function (output) {\n                                if (pdf_output_last) {\n                                    return Em.RSVP.Promise.all(pdf_output_last).then(\n                                        function (output_last) {\n                                            var element, img, imgTable, j, l, len, len1;\n                                            imgTable = [];\n                                            for (j = 0, len = output_last.length; j < len; j++) {\n                                                element = output_last[j];\n                                                for (l = 0, len1 = element.length; l < len1; l++) {\n                                                    img = element[l];\n                                                    imgTable.push(img['value']);\n                                                }\n                                            }\n                                            //table: {\n                                            //    body: [\n                                            //        [img[\"name\"], img[\"value\"]]\n                                            //    ]\n                                            //}\n                                            //pageBreak: \"before\"\n                                            return d.resolve(\n                                                output,\n                                                rows,\n                                                includeAllPages,\n                                                imgTable,\n                                            );\n                                        },\n                                    );\n                                } else {\n                                    return d.resolve(output, rows, includeAllPages);\n                                }\n                            });\n                        });\n                    },\n                    function () {\n                        return d.reject();\n                    },\n                );\n                return d.then(function (\n                    pdf_output,\n                    allRowsForExport,\n                    includeAllPages = false,\n                    output_last = [],\n                ) {\n                    var assetsfolder,\n                        checkedRows,\n                        docDefinition,\n                        dropdownSums,\n                        first,\n                        hideCheckbox,\n                        orientation,\n                        pdf_content,\n                        rowidList,\n                        sumRow,\n                        sumTheseRows,\n                        sumrows,\n                        sums;\n                    //return\n                    // add sum row to pdf\n                    sumRow = [];\n                    first = false;\n                    hideCheckbox = self.get('settings.rowSettings.hideCheckbox');\n                    sums = {};\n                    checkedRows = self.get('checked');\n                    //console.log checkedRows\n                    sumTheseRows =\n                        checkedRows.length > 0 && !includeAllPages ? checkedRows : allRowsForExport;\n                    rowidList = [];\n                    sumTheseRows.forEach(function (item) {\n                        rowidList.push(item.get('id'));\n                        return self.get('summableFields').forEach(function (field) {\n                            var cell;\n                            if (!(field.ext in sums)) {\n                                sums[field.ext] = 0;\n                            }\n                            cell = item.get(field.ext);\n                            if (field.type === 'checkbox') {\n                                if (!sums[field.ext]) {\n                                    sums[field.ext] = [0, 0];\n                                }\n                                if (item.get(field.ext)) {\n                                    return sums[field.ext][0]++;\n                                } else {\n                                    return sums[field.ext][1]++;\n                                }\n                            } else if (field.type === 'dropdown_values') {\n                                if (!sums[field.ext]) {\n                                    sums[field.ext] = [];\n                                }\n                                if (cell) {\n                                    return sums[field.ext].push(cell);\n                                }\n                            } else if (field.type === 'date') {\n                                if (\n                                    Ember.typeOf(cell) === 'string' &&\n                                    cell.substring(0, 6) === 'count:'\n                                ) {\n                                    return (sums[field.ext] += parseInt(cell.substring(6)));\n                                } else {\n                                    sums[field.ext] = '';\n                                }\n                            } else {\n                                return (sums[field.ext] += cell);\n                            }\n                        });\n                    });\n                    sumrows = Em.A([]);\n                    dropdownSums = [];\n                    columns.forEach(function (column) {\n                        var field;\n                        field = column.ext;\n                        if (column.type === 'checkbox') {\n                            return sumrows.pushObject(\n                                self.Collector.format(true, column, null, checkedRows) +\n                                    ': ' +\n                                    sums[field][0] +\n                                    ' / ' +\n                                    self.Collector.format(false, column, null, checkedRows) +\n                                    ': ' +\n                                    sums[field][1],\n                            );\n                        } else if (column.type === 'dropdown_values') {\n                            sums[field].forEach(function (opt) {\n                                return (dropdownSums[opt] = (dropdownSums[opt] || 0) + 1);\n                            });\n                            return sumrows.pushObject(\n                                self.Collector.format(\n                                    dropdownSums,\n                                    column,\n                                    null,\n                                    checkedRows,\n                                    'sumrow',\n                                    self.get('form'),\n                                ),\n                            );\n                        } else if (field in sums) {\n                            return sumrows.pushObject(\n                                self.Collector.format(\n                                    sums[field],\n                                    column,\n                                    null,\n                                    checkedRows,\n                                    'sumrow',\n                                ),\n                            );\n                        } else {\n                            return sumrows.pushObject('');\n                        }\n                    });\n                    sumrows.forEach(function (str) {\n                        if (!first || self.get('type') === 'group') {\n                            return sumRow.push('' + str);\n                        }\n                    });\n                    pdf_output.push(sumRow);\n                    pdf_content = [];\n                    if (!logo) {\n                        logo = self.get('moveniumLogo');\n                    }\n                    pdf_content.push({\n                        columns: [\n                            {\n                                fit: [120, 40],\n                                image: logo,\n                                margin: [0, 0, 0, 20],\n                            },\n                            {\n                                width: '*',\n                                text: report_name_text,\n                                alignment: 'right',\n                                fontSize: 14,\n                                margin: [0, 0, 0, 10],\n                            },\n                        ],\n                    });\n                    if (topHeader) {\n                        pdf_content.push({\n                            text: topHeader,\n                            fontSize: 20,\n                        });\n                    }\n                    if (pdf_filters) {\n                        pdf_content.push(pdf_filters);\n                        pdf_content.push({\n                            text: ' ', // add one empty row\n                        });\n                    }\n                    //table\n                    pdf_content.push({\n                        table: {\n                            headerRows: 1,\n                            widths: widths,\n                            body: pdf_output,\n                        },\n                        layout: 'lightHorizontalLines',\n                        fontSize: 10,\n                    });\n                    if (Ember.get(exportParams, 'signature')) {\n                        pdf_content.push({\n                            style: 'marginTop',\n                            table: {\n                                widths: ['auto', 140, 30, 'auto', 140],\n                                body: [\n                                    [\n                                        {\n                                            border: [false, true, false, false],\n                                            text:\n                                                self.get('intl').t('report.worktask.signature') +\n                                                ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, false, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: self.get('intl').t('thereport.print_name') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                    ],\n                                ],\n                            },\n                        });\n                    }\n                    if (Ember.get(exportParams, 'dateAndPlace')) {\n                        pdf_content.push({\n                            style: 'marginTop',\n                            table: {\n                                widths: ['auto', 140, 55, 'auto', 140],\n                                body: [\n                                    [\n                                        {\n                                            border: [false, true, false, false],\n                                            text: self.get('intl').t('thereport.date') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, false, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: self.get('intl').t('thereport.place') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                    ],\n                                ],\n                            },\n                        });\n                    }\n                    orientation = Ember.get(exportParams, 'orientation')\n                        ? Ember.get(exportParams, 'orientation')\n                        : 'landscape';\n                    pdf_content.push(output_last);\n                    docDefinition = {\n                        footer: (currentPage, pageCount) => {\n                            return self.getFooter(currentPage, pageCount);\n                        },\n                        content: pdf_content,\n                        pageSize: 'A4',\n                        pageOrientation: orientation,\n                        pageMargins: [15, 15, 15, 15],\n                        styles: {\n                            footer: {\n                                fontSize: 8,\n                                color: 'grey',\n                            },\n                            marginTop: {\n                                margin: [0, 40, 0, 0],\n                            },\n                        },\n                    };\n                    //console.log(JSON.stringify(docDefinition, null, 4))\n                    //return\n                    if (format === 'base64') {\n                        assetsfolder = getAssetFolder('assets');\n                        return getScriptsInOrder([\n                            assetsfolder + 'pdfmake_v0.1.68.min.js',\n                            assetsfolder + 'vfs_fonts_v0.1.68.min.js',\n                        ]).then(() => {\n                            return createPdf(docDefinition)._createDoc({}, () => {\n                                var item, j, len, pageSize, ref;\n                                ref = docDefinition.content;\n                                for (j = 0, len = ref.length; j < len; j++) {\n                                    item = ref[j];\n                                    if (item.table != null && item._maxWidth > 842) {\n                                        pageSize = {\n                                            height: item._maxWidth,\n                                            width: item._maxWidth / Math.sqrt(2),\n                                        };\n                                        continue;\n                                    }\n                                }\n                                docDefinition.pageSize = pageSize;\n                                return createPdf(docDefinition).getBase64(function (cb) {\n                                    if (includeAllPages) {\n                                        return resolve({\n                                            pdf: cb,\n                                            rowids: rowidList,\n                                        });\n                                    } else {\n                                        return resolve(cb);\n                                    }\n                                });\n                            });\n                        });\n                    } else {\n                        return resolve(docDefinition);\n                    }\n                });\n            });\n        });\n    },\n    getPdfAttachmentForEmail: function (includeAllPages, params) {\n        if (\n            this.get('form') === 'diary' &&\n            this.get('checked.length') > 0 &&\n            Ember.get(params, 'type') === 'export_pdf_full'\n        ) {\n            return this.export_special_pdf('diary', moment.locale(), params);\n        } else if (this.get('form') === 'diaryreport' && this.get('checked.length') > 0) {\n            return this.createWorksitediaryPdf(this.get('checked'), 'base64');\n        } else if (Ember.get(params, 'type') === 'export_pdf_full') {\n            return this.getTtapiPdf('base64', params);\n        } else if (Ember.get(params, 'type') === 'export_excel') {\n            return this.createExcel(params, true);\n        } else {\n            return this.littleBitUglyPdfExportMethod(\n                'base64',\n                includeAllPages,\n                this.get('emailTitle'),\n                params,\n            );\n        }\n    },\n    thereIsCheckedRows: Ember.computed.gt('checked.length', 0),\n    formContainsApprovedStatus: Ember.computed('form', function () {\n        var field, fields, found;\n        fields = this.get('Collector').fields(this.get('form'));\n        found = false;\n        for (field in fields) {\n            if (\n                fields[field].type === 'status' &&\n                !fields[field].features.readonly &&\n                indexOf1.call(fields[field].options, 'approved') >= 0\n            ) {\n                found = true;\n            }\n        }\n        return found;\n    }),\n    statusFieldIsVisible: Ember.computed('defaultColumns.[]', function () {\n        if (this.get('defaultColumns') && this.get('defaultColumns').findBy('ext', 'status')) {\n            return true;\n        }\n    }),\n    showApprovalLinkSelection: Ember.computed('thereIsCheckedRows', function () {\n        if (this.get('thereIsCheckedRows') && this.get('formContainsApprovedStatus')) {\n            return true;\n        } else if (this.get('customerSettings').checkSetting('email_approval_for_all')) {\n            return true;\n        }\n        return false;\n    }),\n    showMassedit: Ember.computed('settings.massedit', function () {\n        if (!this.get('Collector').testNeeds(['userlevel=3,4,5,6'])) {\n            return false;\n        }\n        return this.get('settings.massedit');\n    }),\n    _addHistoryForSentRows: function (email, form, rowids) {\n        var text;\n        text = this.get('intl').t('general.history_approval_link_sent', {\n            email: email,\n        });\n        return rowids.forEach((rowid) => {\n            return this.get('Collector').ajax({\n                method: 'put',\n                url: form + 's/' + rowid,\n                data: JSON.stringify({\n                    _history: text,\n                }),\n            });\n        });\n    },\n    _getParamsForFetchingRows: function (exclude = []) {\n        var params;\n        params = {\n            sideload: true,\n        };\n        if (!(indexOf1.call(exclude, 'limit') >= 0)) {\n            params.limit = 'all';\n        }\n        if (this.get('settings.filters')) {\n            this.get('settings.filters').forEach((filter) => {\n                var key;\n                if (filter.get('value') && filter.get('field') !== 'status') {\n                    if (filter.get('bindto') && !filter.get('field')) {\n                        return (params[filter.get('bindto')] = filter.get('value'));\n                    } else if (filter.get('form') !== this.get('form')) {\n                        key = filter.get('form') + '[' + filter.get('field') + ']';\n                        return (params[key] = filter.get('value'));\n                    } else {\n                        return (params[filter.get('field')] = filter.get('value'));\n                    }\n                }\n            });\n        }\n        if (this.get('settings.sortByColumn') && !(indexOf1.call(exclude, 'sort') >= 0)) {\n            params.order = this.get('settings.sortByColumn');\n        }\n        if (this.get('status') !== 'all') {\n            params.status = this.get('status');\n        }\n        return params;\n    },\n    allPagesSelected: Ember.computed(\n        'content.meta.count',\n        'checked.length',\n        'content.length',\n        function () {\n            return (\n                this.get('content.meta.count') > this.get('checked.length') &&\n                this.get('checked.length') === this.get('content.length')\n            );\n        },\n    ),\n    emailSendingCount: Ember.computed(\n        'allPagesSelected',\n        'content.meta.count',\n        'checked.length',\n        function () {\n            if (this.get('allPagesSelected')) {\n                return this.get('content.meta.count');\n            } else {\n                return this.get('checked.length');\n            }\n        },\n    ),\n    validateEmail: function (email) {\n        return !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n            email,\n        );\n    },\n    export_special_pdf: function (name, lang = 'fi', params) {\n        var postParams, url;\n        url = 'pdf/' + name;\n        postParams = {\n            form: this.get('form'),\n            lang: lang,\n            filters: JSON.stringify(this.getRawFilters()),\n            type: 'base64',\n        };\n        if (this.get('checked').length > 0) {\n            postParams.id = this.get('checked').mapBy('id').join(',');\n        }\n        if (params.signature) {\n            postParams.signature = params.signature;\n        }\n        if (params.dateAndPlace) {\n            postParams.dateAndPlace = params.dateAndPlace;\n        }\n        return this.get('Collector').ttapi({\n            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    retentionLoading: false,\n    retentionResult: null,\n    retentionError: null,\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        async retentionDryRun() {\n            const controller = this.controller;\n            controller.set('retentionLoading', true);\n            controller.set('retentionResult', null);\n            controller.set('retentionError', null);\n\n            try {\n                const result = await this.Collector.ajax({\n                    method: 'POST',\n                    url: 'projectRetention',\n                    data: JSON.stringify({ mode: 'dry_run', scope: 'extended' }),\n                    headers: {\n                        Authorization:\n                            'Bearer ' +\n                            get(this.session, 'session.authenticated.access_token'),\n                        'Content-Type': 'application/json',\n                    },\n                });\n                controller.set('retentionResult', result);\n                console.info('Retention dry-run result', result);\n            } catch (e) {\n                const msg =\n                    (e.payload && e.payload.error) ||\n                    (e.errors && e.errors[0] && e.errors[0].detail) ||\n                    e.message ||\n                    'Request failed';\n                controller.set('retentionError', msg);\n                console.error('Retention dry-run error', e);\n            } finally {\n                controller.set('retentionLoading', false);\n            }\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\":\"LWAymfXI\",\"block\":\"{\\\"symbols\\\":[\\\"flag\\\",\\\"r\\\"],\\\"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,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Project Data Retention\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"Dry-run: shows which projects and linked data would be deleted for this customer. No data is actually deleted.\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[22,\\\"retentionLoading\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"retentionDryRun\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"if\\\",[[24,[\\\"retentionLoading\\\"]],\\\"Loading...\\\",\\\"Run Retention Dry Run\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"retentionError\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger mt-2\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[22,\\\"retentionError\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"retentionResult\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mt-2\\\"],[10,\\\"style\\\",\\\"max-height: 500px; overflow-y: auto;\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[0,\\\"Cutoff:\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"retentionResult\\\",\\\"cutoff\\\"]],false],[0,\\\" | \\\"],[7,\\\"b\\\",true],[8],[0,\\\"Scope:\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"retentionResult\\\",\\\"scope\\\"]],false],[0,\\\" | \\\"],[7,\\\"b\\\",true],[8],[0,\\\"Eligible projects:\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"retentionResult\\\",\\\"eligible_count\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"retentionResult\\\",\\\"results\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped table-sm\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Project rowid\\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Linked total\\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Linked counts\\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[0,\\\"S3 keys\\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Eligible\\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Deferred\\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"retentionResult\\\",\\\"results\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"project_rowid\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"linked_total\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[7,\\\"pre\\\",true],[10,\\\"style\\\",\\\"margin:0;font-size:11px\\\"],[8],[1,[28,\\\"show-json\\\",[[23,2,[\\\"linked_counts\\\"]]],null],false],[9],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"s3_keys\\\",\\\"length\\\"]],false],[0,\\\" (\\\"],[1,[23,2,[\\\"s3_keys_shared\\\",\\\"length\\\"]],false],[0,\\\" shared)\\\"],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[23,2,[\\\"project_eligible\\\"]],\\\"Yes\\\",\\\"No\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"retention_deferred\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"pre\\\",true],[10,\\\"style\\\",\\\"margin:0;font-size:11px\\\"],[8],[1,[28,\\\"show-json\\\",[[23,2,[\\\"retention_deferred\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                            -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"p\\\",true],[8],[0,\\\"No eligible projects found for this customer.\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[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\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { set, action } from '@ember/object';\n\nexport default class ProjectsRetentionController extends Controller {\n    @service('error-handler') error;\n\n    get retentionCutoff() {\n        const cutoffYear = new Date().getFullYear() - 6;\n        return `<${cutoffYear}-01-01`;\n    }\n\n    @action\n    async changeRetentionStatus(selected, statusId) {\n        if (!selected?.length) return;\n        for (let row of selected) {\n            set(row, 'retention_status', statusId);\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","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\":\"zvBCYC7Z\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filter\\\",\\\"@showFilters\\\"],[\\\"project\\\",[28,\\\"hash\\\",null,[[\\\"retention_date\\\"],[[23,0,[\\\"retentionCutoff\\\"]]]]],\\\"retention_date,retention_status,q\\\"]],{\\\"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,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"fn\\\",[[23,0,[\\\"changeRetentionStatus\\\"]],[23,2,[\\\"selected\\\"]],\\\"approved\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"project.retention_status.approved\\\"],null],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"fn\\\",[[23,0,[\\\"changeRetentionStatus\\\"]],[23,2,[\\\"selected\\\"]],\\\"block_deletion\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"project.retention_status.block_deletion\\\"],null],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"fn\\\",[[23,0,[\\\"changeRetentionStatus\\\"]],[23,2,[\\\"selected\\\"]],\\\"\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.empty\\\"],null],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"edit\\\"]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/retention/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - 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 (/[()]/.test(this.record.name)) {\n            this.salaryTypeNameError = this.intl.t('salarytypev2.error_name_has_brackets');\n            return false;\n        }\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\"}});","import Controller from '@ember/controller';\n\nexport default Controller.extend({});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"uCMCPTAV\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\"],\\\"statements\\\":[[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.retention_log\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@showColumns\\\",\\\"@filter\\\",\\\"@hideAdditionalFiltersButton\\\"],[\\\"retention_log\\\",\\\"status,mode\\\",\\\"status,mode,project_name,rows_deleted,deletion_summary,retention_date,error_message\\\",[28,\\\"hash\\\",null,[[\\\"order\\\"],[\\\"retention_date-\\\"]]],true]],{\\\"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,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/retention-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/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsRoute,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Em.inject.service('collector-service'),\n    settings: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    intl: Em.inject.service(),\n    initapp: Em.inject.service(),\n    flags: Ember.inject.service(),\n    transitionToRightPage: function () {\n        return this.transitionTo('settings.general-v2');\n    },\n    beforeModel: function (transition) {\n        var target_arr;\n        target_arr = transition.targetName.split('.');\n        if (target_arr[0] === 'settings' && !this.get('Collector').testNeedsOne('userlevel=5')) {\n            transition.abort();\n            return this.transitionTo('my-sites.index');\n        } else if (target_arr[0] === 'settings' && target_arr[1] && target_arr[1] !== 'index') {\n        } else {\n            return this.transitionToRightPage();\n        }\n    },\n    actions: {\n        willTransition: function (transition) {\n            var force_refresh, ref;\n            force_refresh = ['salary.salarytypes'];\n            if (\n                transition.targetName.substring(0, 8) !== 'settings' ||\n                ((ref = transition.targetName), indexOf.call(force_refresh, ref) >= 0)\n            ) {\n                return transition.finally(() => {\n                    if (\n                        this.controller.get('_refreshNeeded') ||\n                        this.get('settings').refreshNeeded()\n                    ) {\n                        this.get('initapp').clearInit();\n                        return this.get('dialogs')\n                            .alert(this.get('intl').t('general.settings_refresh_needed'))\n                            .then(function () {\n                                return location.reload();\n                            });\n                    }\n                });\n            } else if (transition.targetName === 'settings.index') {\n                return this.transitionToRightPage();\n            }\n        },\n    },\n});\n\nexport default SettingsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Z+qVvSHK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"u84qli3r\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.shift_planning\\\",\\\"userlevel=5,3,6\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"react\\\",[],[[\\\"@comp\\\"],[\\\"ShiftPlanningViewV2\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/shift-planning/gantt/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class resourcePlanningRoute extends Route {\n    @service('collector-service') Collector;\n    @service router;\n\n    beforeModel(transition) {\n        this.transitionToRightPage(transition);\n    }\n\n    transitionToRightPage(transition) {\n        if (\n            transition.targetName === 'shift-planning.gantt' &&\n            this.Collector.testNeeds(['!userfieldcheck.resourcePlanner'])\n        ) {\n            this.router.transitionTo('shift-planning.week');\n        }\n    }\n\n    @action\n    willTransition(transition) {\n        this.transitionToRightPage(transition);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"Snec2m5U\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"react\\\",[],[[\\\"@comp\\\"],[\\\"MobileView\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/shift-planning/week/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddNoticeIndexController;\n\nimport Ember from 'ember';\n\nSiteSafetyAddNoticeIndexController = Ember.Controller.extend();\n\nexport default SiteSafetyAddNoticeIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddNoticeIndexRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyAddNoticeIndexRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function () {\n        var c;\n        c = this.get('Collector');\n        if (c.testNeedsOne('tr@add') && !c.testNeedsOne('mvr@add')) {\n            this.transitionTo('site_safety.addnotice.tr');\n        }\n        if (c.testNeedsOne('mvr@add') && !c.testNeedsOne('tr@add')) {\n            this.transitionTo('site_safety.addnotice.mvr');\n        }\n        if (!c.testNeedsOne('tr') && c.testNeedsOne('mvr')) {\n            this.transitionTo('site_safety.addnotice.mvr');\n        }\n        if (!c.testNeedsOne('mvr') && c.testNeedsOne('tr')) {\n            return this.transitionTo('site_safety.addnotice.tr');\n        }\n    },\n});\n\nexport default SiteSafetyAddNoticeIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"YB4kluSQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"site_safety.addnotice.tr\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Length\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.add_notice.tr\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"site_safety.addnotice.mvr\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Humidity\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.add_notice.mvr\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/addnotice/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/mvr/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddnoticeMvrController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nSiteSafetyAddnoticeMvrController = GeneralAddController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Em.inject.service(),\n    customization: {\n        type: {\n            hide: true,\n            features: {\n                default_value: 'tr',\n            },\n        },\n        date: {\n            translation: 'site_safety.notice.fixdate',\n            features: {\n                default_value: moment().add(3, 'days').format('YYYY-MM-DD'),\n            },\n        },\n        user: {\n            translation: 'site_safety.notice.person',\n        },\n        email: {\n            translation: 'site_safety.notice.send_email',\n        },\n    },\n    actions: {\n        save: function () {\n            var record;\n            record = this.get('model');\n            return record.validate().then(() => {\n                var email, projectString, userString;\n                if (!record.get('isValid')) {\n                    this.set('submitted', true);\n                    this.set('spinIsLoading', false);\n                    return;\n                }\n                if (record.get('email')) {\n                    userString = '';\n                    if (this.get('session.currentUser.firstname')) {\n                        userString += this.get('session.currentUser.firstname') + ' ';\n                    }\n                    if (this.get('session.currentUser.lastname')) {\n                        userString += this.get('session.currentUser.lastname') + '\\n';\n                    }\n                    if (this.get('session.currentUser.email')) {\n                        userString += this.get('session.currentUser.email') + '\\n';\n                    }\n                    if (this.get('session.currentUser.phone')) {\n                        userString += this.get('session.currentUser.phone') + '\\n';\n                    }\n                    projectString = '';\n                    if (record.get('project.number')) {\n                        projectString += record.get('project.number') + ' ';\n                    }\n                    projectString += record.get('project.name');\n                    email = {\n                        email: record.get('email'),\n                        title:\n                            this.get('session.currentUser.company') +\n                            ' - ' +\n                            this.get('intl').t('site_safety.notice.email_content.title'),\n                        lang: this.get('intl.primaryLocale'),\n                        content:\n                            this.get('intl').t('site_safety.notice.email_content.content') +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.project') +\n                            ': ' +\n                            projectString +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.desc') +\n                            ': ' +\n                            record.get('desc') +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.noticedesc') +\n                            ': ' +\n                            record.get('noticedesc') +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.person') +\n                            ': ' +\n                            record.get('user.firstname') +\n                            ' ' +\n                            record.get('user.lastname') +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.fixdate') +\n                            ': ' +\n                            moment(record.get('date')).format('L') +\n                            '\\n\\n' +\n                            userString,\n                    };\n                    if (record.get('pic')) {\n                        email.pic = {\n                            name: record.get('pic').name,\n                            data: record.get('pic').data,\n                        };\n                    }\n                    record.set('email_content', email);\n                }\n                record.set('creator', this.get('session.currentUser'));\n                record.set('type', 'mvr');\n                return record\n                    .save()\n                    .then(() => {\n                        return this.transitionToRoute('site_safety.report.mvr.notices');\n                    })\n                    .catch((back) => {\n                        this.set('submitted', true);\n                        this.set('spinIsLoading', false);\n                        return this.set('validationMessageData', back.errors);\n                    });\n            });\n        },\n    },\n});\n\nexport default SiteSafetyAddnoticeMvrController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/mvr/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddnoticeTrRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nSiteSafetyAddnoticeTrRoute = GeneralAddRoute.extend({\n    modelName: 'trnotice',\n    controllerName: 'site_safety.addnotice.mvr',\n    savedRoute: 'site_safety.report.mvr.notices',\n});\n\nexport default SiteSafetyAddnoticeTrRoute;\n","export default Ember.HTMLBars.template({\"id\":\"mqs4xVed\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/addnotice/mvr/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"s1DzPTj7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/addnotice/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/tr/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddnoticeTrController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nSiteSafetyAddnoticeTrController = GeneralAddController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Em.inject.service(),\n    customization: {\n        type: {\n            hide: true,\n            features: {\n                default_value: 'tr',\n            },\n        },\n        date: {\n            translation: 'site_safety.notice.fixdate',\n            features: {\n                default_value: moment().add(3, 'days').format('YYYY-MM-DD'),\n            },\n        },\n        email: {\n            translation: 'site_safety.notice.send_email',\n        },\n    },\n    actions: {\n        save: function () {\n            var record;\n            record = this.get('model');\n            return record.validate().then(() => {\n                var email, projectString, userString;\n                if (!record.get('isValid')) {\n                    this.set('submitted', true);\n                    this.set('spinIsLoading', false);\n                    return;\n                }\n                //if record.get('email')\n                userString = '';\n                if (this.get('session.currentUser.firstname')) {\n                    userString += this.get('session.currentUser.firstname') + ' ';\n                }\n                if (this.get('session.currentUser.lastname')) {\n                    userString += this.get('session.currentUser.lastname') + '\\n';\n                }\n                if (this.get('session.currentUser.email')) {\n                    userString += this.get('session.currentUser.email') + '\\n';\n                }\n                if (this.get('session.currentUser.phone')) {\n                    userString += this.get('session.currentUser.phone') + '\\n';\n                }\n                projectString = '';\n                if (record.get('project.number')) {\n                    projectString += record.get('project.number') + ' ';\n                }\n                projectString += record.get('project.name');\n                email = {\n                    email: record.get('email'),\n                    title:\n                        this.get('session.currentUser.company') +\n                        ' - ' +\n                        this.get('intl').t('site_safety.notice.email_content.title'),\n                    lang: this.get('intl.primaryLocale'),\n                    content:\n                        this.get('intl').t('site_safety.notice.email_content.content') +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.project') +\n                        ': ' +\n                        projectString +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.desc') +\n                        ': ' +\n                        record.get('desc') +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.noticedesc') +\n                        ': ' +\n                        record.get('noticedesc') +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.person') +\n                        ': ' +\n                        record.get('user.firstname') +\n                        ' ' +\n                        record.get('user.lastname') +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.fixdate') +\n                        ': ' +\n                        moment(record.get('date')).format('L') +\n                        '\\n\\n' +\n                        userString,\n                };\n                if (record.get('pic')) {\n                    email.pic = {\n                        name: record.get('pic').name,\n                        data: record.get('pic').data,\n                    };\n                }\n                record.set('email_content', email);\n                record.set('creator', this.get('session.currentUser'));\n                return record\n                    .save()\n                    .then(() => {\n                        return this.transitionToRoute('site_safety.report.tr.notices');\n                    })\n                    .catch((back) => {\n                        this.set('submitted', true);\n                        this.set('spinIsLoading', false);\n                        return this.set('validationMessageData', back.errors);\n                    });\n            });\n        },\n    },\n});\n\nexport default SiteSafetyAddnoticeTrController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/tr/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddnoticeTrRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nSiteSafetyAddnoticeTrRoute = GeneralAddRoute.extend({\n    modelName: 'trnotice',\n    controllerName: 'site_safety.addnotice.tr',\n    savedRoute: 'site_safety.report.tr.notices',\n});\n\nexport default SiteSafetyAddnoticeTrRoute;\n","export default Ember.HTMLBars.template({\"id\":\"RkW9aWfO\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/addnotice/tr/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyController;\n\nimport Ember from 'ember';\n\nSiteSafetyController = Ember.Controller.extend();\n\nexport default SiteSafetyController;\n","export default Ember.HTMLBars.template({\"id\":\"XahcgWn7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/loading/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed, set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { Promise as EmberPromise } from 'rsvp';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    store: service(),\n    collector: service('collector-service'),\n    addMeasurement: alias('model'),\n    project_obj: computed('model', function () {\n        if (get(this, 'collector').fieldExists(get(this, 'model'), 'project')) {\n            return get(this, 'model') + '.project';\n        }\n        return 'measurement_' + get(this, 'model') + '.project';\n    }),\n    oldMeasurement: computed('project', function () {\n        let measurementName = get(this, 'model');\n        if (!get(this, 'collector').fieldExists(get(this, 'model'), 'project')) {\n            measurementName = 'measurement_' + get(this, 'model');\n        }\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            //eslint-disable-line\n            promise: new EmberPromise((resolve) => {\n                get(this, 'store')\n                    .query(measurementName, {\n                        date: moment().format('YYYY-MM-DD'),\n                        project: get(this, 'project.id'),\n                    })\n                    .then((measurements) => this._resolveMeasurement(measurements, resolve));\n            }),\n        });\n    }),\n    actions: {\n        projectChanged(project) {\n            set(this, 'project', project);\n        },\n    },\n\n    _resolveMeasurement(measurements, resolve) {\n        if (get(measurements, 'firstObject')) {\n            resolve({ id: get(measurements, 'firstObject').id });\n        } else {\n            resolve();\n        }\n    },\n});\n","import Route from '@ember/routing/route';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Route.extend({\n    session: service(),\n    model() {\n        return this.modelFor('site-safety.measurement.add');\n    },\n    setupController(controller) {\n        this._super(...arguments);\n        if (get(this, 'session.currentUser.currentMySite')) {\n            set(controller, 'project', get(this, 'session.currentUser.currentMySite'));\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"KoXIG/dQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 col-lg-4 col-lg-offset-4 col-md-offset-3 col-sm-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.site\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"project_obj\\\"]]],[[\\\"_class\\\",\\\"change\\\",\\\"value\\\"],[\\\"form-control input-lg\\\",\\\"projectChanged\\\",[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"oldMeasurement\\\",\\\"isFulfilled\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"oldMeasurement\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\\\"],[8],[0,\\\"\\\\n                    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"models\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"site_safety.measurement.add.measurement\\\",[28,\\\"array\\\",[[24,[\\\"oldMeasurement\\\",\\\"id\\\"]],[24,[\\\"model\\\"]],[24,[\\\"project\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"tr.site.goto_oldmeasurement\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\\\"],[8],[0,\\\"\\\\n                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"models\\\"],[[28,\\\"concat\\\",[\\\"btn btn-block btn-lg\\\",\\\" \\\",[28,\\\"if\\\",[[24,[\\\"oldMeasurement\\\"]],\\\"btn-default\\\",\\\"btn-primary\\\"],null],\\\" \\\"],null],\\\"site_safety.measurement.add.measurement\\\",[28,\\\"array\\\",[[24,[\\\"model\\\"]],[24,[\\\"project\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"tr.site.goto_measurement\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/add/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/add/measurement/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrAddMeasurementController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../../classes/collector';\n\nimport RSVP from 'rsvp';\n\nSiteSafetyTrAddMeasurementController = Ember.Controller.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    applicationController: Ember.inject.controller('application'),\n    saved: Ember.inject.controller('site-safety/saved'),\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    session: Em.inject.service(),\n    dialogs: Ember.inject.service(),\n    intl: Em.inject.service(),\n    plus: 0,\n    minus: 0,\n    savedNotices: [],\n    disableAutosave: false,\n    saveText: Ember.computed(function () {\n        return (\n            '<span class=\"glyphicon glyphicon-floppy-disk\"></span> ' +\n            this.get('intl').t('measurement.save')\n        );\n    }),\n    //    measurementController: Ember.computed.alias 'controllers.site-safety/measurement'\n    init: function () {\n        this._super(...arguments);\n        return document.addEventListener(\n            'deviceready',\n            () => {\n                document.addEventListener(\n                    'pause',\n                    () => {\n                        return this.eventListener('pause');\n                    },\n                    false,\n                );\n                return document.addEventListener(\n                    'resume',\n                    () => {\n                        return this.eventListener('resume');\n                    },\n                    false,\n                );\n            },\n            false,\n        );\n    },\n    eventListener: function (event) {\n        if (event === 'pause') {\n            return this.set('disableAutosave', true);\n        } else if (event === 'resume') {\n            this.set('disableAutosave', false);\n            return this.autosave();\n        }\n    },\n    fields: Em.computed('model.form', function () {\n        var fields, form, mc, self;\n        self = this;\n        mc = this.get('measurementController');\n        form = this.get('model.form');\n        fields = mc.parseFields(form);\n        fields.forEach(function (item) {\n            item.notices = Em.A([]);\n            self.addObserver('model.record.' + item.ext + '_plus', self, 'recalculateTotal');\n            return self.addObserver(\n                'model.record.' + item.ext + '_minus',\n                self,\n                'recalculateTotal',\n            );\n        });\n        Ember.run.later(() => {\n            return self.recalculateTotal();\n        }, 1);\n        return fields;\n    }),\n    signatureFields: Ember.computed('model.form', function () {\n        return this.get('Collector')\n            .fieldArray(this.get('model.form'))\n            .filter((field) => {\n                return field.type === 'signature' || field.name.slice(-4) === 'sign';\n            });\n    }),\n    extrafields: Em.computed(function () {\n        var field, fieldname, fields, form, return_fields, skip_these;\n        form = this.get('model.form');\n        fields = this.Collector.fields(form);\n        return_fields = [];\n        skip_these = ['date', 'project', 'user', 'tr_rating', 'mvr_rating'].concat(\n            this.get('signatureFields').mapBy('name'),\n        );\n        for (fieldname in fields) {\n            field = fields[fieldname];\n            if (\n                !(indexOf.call(skip_these, fieldname) >= 0) &&\n                fieldname.indexOf('_plus') < 0 &&\n                fieldname.indexOf('_notice') < 0 &&\n                fieldname.indexOf('_minus') < 0\n            ) {\n                if (!Ember.get(field, 'features.hide')) {\n                    return_fields.push(fieldname);\n                }\n            }\n        }\n        return return_fields;\n    }),\n    textClass: Em.computed('model.record.mvr_rating', 'model.record.tr_rating', function () {\n        if (this.get('model.record.' + this.get('model.form') + '_rating') >= 95) {\n            return 'alert-success';\n        } else if (this.get('model.record.' + this.get('model.form') + '_rating') >= 90) {\n            return 'alert-warning';\n        } else {\n            return 'alert-danger';\n        }\n    }),\n    /*\n  ratingClass: (->\n      if @get('model.record.tr_rating') >= 95\n          @set('textClass', \"alert-success\")\n      else if @get('model.record.tr_rating') >= 90\n          @set('textClass', \"alert-warning\")\n      else\n          @set('textClass', \"alert-danger\")\n  ).observes('model.record.tr_rating')\n\n  */\n    // observers are added in 'fields' property\n    recalculateTotal: function () {\n        var arr, i, item, len, m, mval, p, pval, rating, self;\n        self = this;\n        arr = this.get('fields');\n        pval = 0;\n        mval = 0;\n        rating = 0;\n        for (i = 0, len = arr.length; i < len; i++) {\n            item = arr[i];\n            p = self.get('model.record.' + item.ext + '_plus');\n            m = self.get('model.record.' + item.ext + '_minus');\n            if (p !== null && !isNaN(p) && p !== '') {\n                pval += parseInt(p, 10);\n            }\n            if (m !== null && !isNaN(m) && m !== '') {\n                mval += parseInt(m, 10);\n            }\n        }\n        if (pval !== 0 || mval !== 0) {\n            rating = ((pval / (pval + mval)) * 100).toFixed(2);\n        }\n        if (this.get('model.form') === 'mvr') {\n            this.set('model.record.mvr_rating', rating);\n        } else {\n            this.set('model.record.tr_rating', rating);\n        }\n        this.set('plus', pval);\n        return this.set('minus', mval);\n    },\n    saveNotice: function (notice) {\n        var email, projectString, promise, record, self, userString;\n        record = notice;\n        //if !@get('error')\n        self = this;\n        userString = '';\n        if (this.get('session.currentUser.firstname')) {\n            userString += this.get('session.currentUser.firstname') + ' ';\n        }\n        if (this.get('session.currentUser.lastname')) {\n            userString += this.get('session.currentUser.lastname') + '\\n';\n        }\n        if (this.get('session.currentUser.email')) {\n            userString += this.get('session.currentUser.email') + '\\n';\n        }\n        if (this.get('session.currentUser.phone')) {\n            userString += this.get('session.currentUser.phone') + '\\n';\n        }\n        projectString = '';\n        if (record.get('project.number')) {\n            projectString += record.get('project.number') + ' ';\n        }\n        projectString += record.get('project.name');\n        email = {\n            title:\n                this.get('session.currentUser.company') +\n                ' - ' +\n                this.get('intl').t('site_safety.notice.email_content.title'),\n            content:\n                this.get('intl').t('site_safety.notice.email_content.content') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.project') +\n                ': ' +\n                projectString +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.place') +\n                ': ' +\n                record.get('place') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.desc') +\n                ': ' +\n                record.get('desc') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.noticedesc') +\n                ': ' +\n                record.get('noticedesc') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.person') +\n                ': ' +\n                record.get('user.firstname') +\n                ' ' +\n                record.get('user.lastname') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.fixdate') +\n                ': ' +\n                moment(record.get('date')).format('L') +\n                '\\n\\n' +\n                userString,\n        };\n        if (record.get('pic') && record.get('pic').length > 0) {\n            email.pic = {\n                name: record.get('pic')[0].name,\n                data: record.get('pic')[0].data,\n            };\n        }\n        record.set('email_content', email);\n        record.set('project', this.get('model.record.project'));\n        record.set('type', this.get('model.record.constructor.modelName'));\n        record.set('creator', this.get('session.currentUser'));\n        promise = record.save();\n        promise.then(function () {\n            if (self.get('model.record.' + notice.get('name') + '_notices')) {\n                return self\n                    .get('model.record.' + notice.get('name') + '_notices')\n                    .pushObject(record.get('id'));\n            } else {\n                return self.set(\n                    'model.record.' + notice.get('name') + '_notices',\n                    Em.A([record.get('id')]),\n                );\n            }\n        });\n        return promise;\n    },\n    errors: Em.A([]),\n    handleRequestError: function (e) {\n        var d;\n        d = this.get('dialogs');\n        return d.alert(\n            this.get('intl').t('site-safety.request.error') + '<hr>' + JSON.stringify(e.errors),\n        );\n    },\n    autosave: function () {\n        var timer;\n        if (!Ember.testing) {\n            timer = Ember.run.later(\n                this,\n                () => {\n                    if (!this.get('disableAutosave')) {\n                        this.send('add', true);\n                        return this.autosave();\n                    }\n                },\n                this.get('Collector').testNeedsOne('development') ? 10000 : 300000,\n            );\n            return this.set('timer', timer);\n        }\n    },\n    actions: {\n        add: function (autosave = false) {\n            var c, errors, field, i, len, promises, req_fields, row, valid;\n            row = this.get('model.record');\n            row.set('project', this.store.peekRecord('project', this.get('model.projectid')));\n            c = this.get('Collector');\n            req_fields = [c.field(this.get('model.form'), 'project')].concat(\n                c.fieldArray(this.get('model.form')).filterBy('features.mandatory', true),\n            );\n            valid = true;\n            errors = Em.A([]);\n            for (i = 0, len = req_fields.length; i < len; i++) {\n                field = req_fields[i];\n                if (!row.get(field.name)) {\n                    errors.pushObject(field.translated_name);\n                    valid = false;\n                }\n            }\n            promises = [];\n            if (!valid && autosave) {\n                return;\n            }\n            if (autosave) {\n                this.get('savedNotices').forEach((notice) => {\n                    if (notice.get('hasDirtyAttributes')) {\n                        return promises.push(this.saveNotice(notice));\n                    }\n                });\n            } else {\n                this.get('fields').forEach((field) => {\n                    return field.notices.forEach((notice) => {\n                        if (notice.get('hasDirtyAttributes')) {\n                            return promises.push(this.saveNotice(notice));\n                        }\n                    });\n                });\n            }\n            return Promise.all(promises)\n                .then(() => {\n                    var autoSavePromise;\n                    this.set('errors', errors);\n                    if (valid) {\n                        row.set('date', moment().format('YYYY-MM-DD'));\n                        if (autosave) {\n                            autoSavePromise = row.save();\n                            this.set('autosaved', moment());\n                            this.set('autoSavePromise', autoSavePromise);\n                            return autoSavePromise\n                                .then(() => {\n                                    return this.set('autosaved', moment());\n                                })\n                                .catch((e) => {\n                                    console.log(e);\n                                    return this.handleRequestError(e);\n                                })\n                                .finally(() => {\n                                    return this.set('spinIsLoading', false);\n                                });\n                        } else {\n                            autoSavePromise = this.get('autoSavePromise');\n                            if (!autoSavePromise) {\n                                autoSavePromise = RSVP.Promise.resolve();\n                            }\n                            return autoSavePromise.then(() => {\n                                return row\n                                    .save()\n                                    .then(() => {\n                                        return this.transitionToRoute(\n                                            'site_safety.saved',\n                                            row.get('constructor.modelName'),\n                                            row.get('id'),\n                                        );\n                                    })\n                                    .catch((e) => {\n                                        console.log(e);\n                                        return this.handleRequestError(e);\n                                    })\n                                    .finally(() => {\n                                        return this.set('spinIsLoading', false);\n                                    });\n                            });\n                        }\n                    } else {\n                        return this.set('spinIsLoading', false);\n                    }\n                })\n                .catch((e) => {\n                    console.log(e);\n                    this.handleRequestError(e);\n                    this.set('spinIsLoading', false);\n                    return this.set('approvedSpinIsLoading', false);\n                });\n        },\n\n        empty: function (field) {\n            return this.set('model.record.' + field, null);\n        },\n        setSignature: function (value, field) {\n            return this.get('model.record').set(field, value);\n        },\n        markAsApproved: function () {\n            this.set('model.record.status', 'approved');\n            return this.send('save');\n        },\n        addToSavedNotices: function (notice) {\n            return this.get('savedNotices').push(notice);\n        },\n        //console.log notice\n        cancelExtrainfoModal: function () {\n            return this.set('showExtrainfoModal', false);\n        },\n        saveExtrainfoModal: function () {\n            this.set('showExtrainfoModal', false);\n            return this.send('add');\n        },\n        save: function () {\n            if (this.get('extrafields.length') === 0) {\n                return this.send('add');\n            } else {\n                return this.set('showExtrainfoModal', true);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyTrAddMeasurementController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { hash } from 'rsvp';\nimport { set, get } from '@ember/object';\nimport { cancel } from '@ember/runloop';\n\nexport default Route.extend({\n    dialogs: service(),\n    collector: service('collector-service'),\n    store: service(),\n    intl: service(),\n    model(params) {\n        let form = ('measurement_' + this.modelFor('site-safety.measurement.add')).camelize();\n\n        if (get(this, 'collector').formExists(this.modelFor('site-safety.measurement.add'))) {\n            form = this.modelFor('site-safety.measurement.add');\n        }\n        const addParams = this.paramsFor('site-safety.measurement.add');\n\n        let record = null;\n        if (addParams.id != 'add') {\n            record = get(this, 'store').findRecord(form, addParams.id);\n        } else {\n            record = get(this, 'store').createRecord(form);\n            let project = get(this, 'store').peekRecord('project', params.project);\n            if (!project) {\n                project = get(this, 'store').findRecord('project', params.project);\n            }\n            set(record, 'project', project);\n        }\n\n        return hash({\n            record: record,\n            form: form,\n            projectid: params.project,\n        });\n    },\n    setupController(controller) {\n        this._super(...arguments);\n        controller.autosave();\n    },\n\n    resetController(controller, isExiting) {\n        if (isExiting && get(controller, 'timer')) {\n            cancel(get(controller, 'timer'));\n        }\n    },\n\n    actions: {\n        willTransition(transition) {\n            if (get(this, 'controller.model.record.isNew') && !get(this, 'allowTransition')) {\n                transition.abort();\n            } else {\n                return true;\n            }\n            if (document.querySelector('.dialog') === null) {\n                get(this, 'dialogs')\n                    .confirm(get(this, 'intl').t('site_safety.measurement.confirm_leave'))\n                    .then((con) => this._setTransition(con, transition));\n            }\n        },\n    },\n\n    _setTransition(con, transition) {\n        if (con) {\n            set(this, 'allowTransition', true);\n            transition.retry();\n        }\n        set(this, 'allowTransition', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"PDwnIB6w\",\"block\":\"{\\\"symbols\\\":[\\\"extrafield\\\",\\\"error\\\",\\\"signatureField\\\",\\\"field\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"site-safety/measurement/row-component\\\",null,[[\\\"name\\\",\\\"title\\\",\\\"noticesArr\\\",\\\"notices_on\\\",\\\"model\\\",\\\"options\\\",\\\"addToSavedNotices\\\"],[[23,4,[\\\"ext\\\"]],[23,4,[\\\"title\\\"]],[23,4,[\\\"notices\\\"]],true,[24,[\\\"model\\\",\\\"record\\\"]],[23,4,[\\\"options\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addToSavedNotices\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.plus\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"plus\\\"],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.minus\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"minus\\\"],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"customersetting.hide_measurement_index\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"alert \\\",[22,\\\"textClass\\\"]]]],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"measurement.rating\\\"],null],false],[0,\\\": \\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"model\\\",\\\"form\\\"]],\\\"mvr\\\"],null]],null,{\\\"statements\\\":[[1,[24,[\\\"model\\\",\\\"record\\\",\\\"mvr_rating\\\"]],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[24,[\\\"model\\\",\\\"record\\\",\\\"tr_rating\\\"]],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"signatureFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"signatureFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[0,\\\":\\\"],[9],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"glyphicon glyphicon-remove-circle pull-right tr-icon l-gray\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"empty\\\",[23,3,[\\\"name\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"collector/fields/signature-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"model\\\",\\\"bubbleChange\\\"],[[23,3,[]],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"record\\\"]],\\\"setSignature\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.missing_fields\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[1,[23,2,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"autosaved\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"i\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site-safety.autosaved\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"moment-from\\\",[[24,[\\\"autosaved\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[23,0,[\\\"spinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-block btn-warning btn-lg\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-floppy-disk\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"measurement.save\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.measurement_status\\\",[28,\\\"concat\\\",[[24,[\\\"model\\\",\\\"form\\\"]],\\\".status\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"saveButtonText\\\"],[[24,[\\\"approvedSpinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"markAsApproved\\\"],null],\\\"btn btn-block btn-warning btn-lg\\\",[24,[\\\"markAsApprovedText\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showExtrainfoModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"measurement.extra_info\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"cancelExtrainfoModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"extrafields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"site_safety.measurement.description\\\"],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,1,[]],[24,[\\\"model\\\",\\\"form\\\"]]]]],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[28,\\\"concat\\\",[[24,[\\\"model\\\",\\\"form\\\"]],\\\".\\\",[23,1,[]]],null]],[[\\\"_class\\\",\\\"model\\\"],[\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"record\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[12,\\\"name\\\",\\\"saveExtraInfo\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveExtrainfoModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/add/measurement/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrAddRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyTrAddRoute = Ember.Route.extend({\n    store: Ember.inject.service(),\n    model: function (params) {\n        if (params.id !== 'add') {\n            this.transitionTo('site_safety.measurement.add.measurement');\n        }\n        return params.measurement;\n    },\n});\n\nexport default SiteSafetyTrAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"bhsBdDnZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/add/template.hbs\"}});","import Controller from '@ember/controller';\nimport moment from 'moment';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    collector: service('collector-service'),\n    intl: service(),\n    project: null,\n    init() {\n        this._super(...arguments);\n        const intl = get(this, 'intl');\n        set(this, 'options', {\n            tr: {\n                working: {\n                    options: [\n                        intl.t('tr.notice.desc.helmet'),\n                        intl.t('tr.notice.desc.glasses'),\n                        intl.t('tr.notice.desc.vest'),\n                        intl.t('tr.notice.desc.shoes'),\n                        intl.t('tr.notice.desc.harness'),\n                        intl.t('tr.notice.desc.idcard'),\n                        intl.t('tr.notice.desc.extinguish'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                scaffolding: {\n                    options: [\n                        intl.t('tr.notice.desc.ladder'),\n                        intl.t('tr.notice.desc.stool'),\n                        intl.t('tr.notice.desc.ramp'),\n                        intl.t('tr.notice.desc.rail'),\n                        intl.t('tr.notice.desc.guide'),\n                        intl.t('tr.notice.desc.footboard'),\n                        intl.t('tr.notice.desc.scaffoldingcard'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                tools: {\n                    options: [\n                        intl.t('tr.notice.desc.circular_saw_cover'),\n                        intl.t('tr.notice.desc.circular_saw_stick'),\n                        intl.t('tr.notice.desc.moonwalker'),\n                        intl.t('tr.notice.desc.personlifter'),\n                        intl.t('tr.notice.desc.scissor_lifter'),\n                        intl.t('tr.notice.desc.gasbottles'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                fall: {\n                    options: [\n                        intl.t('tr.notice.desc.gapcover_missing'),\n                        intl.t('tr.notice.desc.gapcover_unmarked'),\n                        intl.t('tr.notice.desc.rail_missing'),\n                        intl.t('tr.notice.desc.handguide_missing'),\n                        intl.t('tr.notice.desc.guide_missing'),\n                        intl.t('tr.notice.desc.footboard'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                electricity: {\n                    options: [\n                        intl.t('tr.notice.desc.electricitybox'),\n                        intl.t('tr.notice.desc.general_lighting'),\n                        intl.t('tr.notice.desc.cabels'),\n                        intl.t('tr.notice.desc.cabels_broken'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                garbage: {\n                    options: [\n                        intl.t('tr.notice.desc.area_orderliness'),\n                        intl.t('tr.notice.desc.garbage_bin_full'),\n                        intl.t('tr.notice.desc.garbage_contains_wood'),\n                        intl.t('tr.notice.desc.wood_garbage'),\n                        intl.t('tr.notice.desc.material_moving'),\n                        intl.t('tr.notice.desc.chisel_garbage'),\n                        intl.t('tr.notice.desc.masonry_garbage'),\n                        intl.t('tr.notice.desc.drywall_garbage'),\n                        intl.t('tr.notice.desc.plumber_garbage'),\n                        intl.t('tr.notice.desc.electrician_garbage'),\n                        intl.t('tr.notice.desc.IV_garbage'),\n                        intl.t('tr.notice.desc.vacuuming'),\n                        intl.t('tr.notice.desc.chisel_job'),\n                        intl.t('tr.notice.desc.clearing_job'),\n                        intl.t('tr.notice.desc.moving_job'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                dust: {\n                    options: [\n                        intl.t('tr.notice.desc.sanddust'),\n                        intl.t('tr.notice.desc.sawdust'),\n                        intl.t('tr.notice.desc.drywalldust'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n            },\n            mvr: {\n                working: {\n                    options: [\n                        intl.t('mvr.notice.desc.helmet'),\n                        intl.t('mvr.notice.desc.glasses'),\n                        intl.t('mvr.notice.desc.vest'),\n                        intl.t('mvr.notice.desc.shoes'),\n                        intl.t('mvr.notice.desc.harness'),\n                        intl.t('mvr.notice.desc.idcard'),\n                        intl.t('mvr.notice.desc.extinguish'),\n                        intl.t('mvr.notice.desc.risk'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n\n                equipment: {\n                    options: [\n                        intl.t('mvr.notice.desc.machines'),\n                        intl.t('mvr.notice.desc.tools'),\n                        intl.t('mvr.notice.desc.electricity'),\n                        intl.t('mvr.notice.desc.lighting'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                protection: {\n                    options: [\n                        intl.t('mvr.notice.desc.fall'),\n                        intl.t('mvr.notice.desc.collapse'),\n                        intl.t('mvr.notice.desc.safety_zone'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                road: {\n                    options: [\n                        intl.t('mvr.notice.desc.trafic'),\n                        intl.t('mvr.notice.desc.walking'),\n                        intl.t('mvr.notice.desc.worksite_road'),\n                        intl.t('mvr.notice.desc.passage'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                order: {\n                    options: [\n                        intl.t('mvr.notice.desc.general_order'),\n                        intl.t('mvr.notice.desc.garbage_bins'),\n                        intl.t('mvr.notice.desc.dangerous_materials'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n            },\n        });\n    },\n    form: alias('model'),\n    parseFields(form) {\n        const fields = get(this, 'collector').fieldArray(form);\n        let temp = A([]);\n        let counter = 1;\n        const options = get(this, 'options');\n        // make helper array for fields with notices\n        let helper_notices = {};\n        fields.forEach((item) => {\n            const key_arr = get(item, 'name').split('_');\n            if (key_arr[1] === 'notices') {\n                helper_notices[key_arr[0]] = true;\n            }\n        });\n\n        fields.forEach((item) => {\n            const key_arr = get(item, 'name').split('_');\n            if (key_arr[1] === 'plus') {\n                const ext = key_arr[0];\n                counter++;\n                const title = get(this, 'intl').exists(form + '.title.' + ext)\n                    ? get(this, 'intl').t(form + '.title.' + ext)\n                    : counter + '. ' + item.translated_name;\n                temp.push({\n                    ext: ext,\n                    title: title,\n                    notices: helper_notices[ext] == true,\n                    options: options[form] ? options[form][ext].options : false,\n                });\n            }\n        });\n        return temp;\n    },\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/data/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementDataController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nimport { computed } from '@ember/object';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyMeasurementDataController = GeneralReportController.extend(formattedMixin, {\n    //    needs: 'site-safety/measurement'\n    flags: service(),\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    queryParams: ['project', 'date', 'page', 'groupBy'],\n    project: null,\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    form: Ember.computed.alias('measurementController.form'),\n    init: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n        ]);\n    }),\n    // Em.Object.create({field: \"groupBy\", type: \"groupByFilter\"})\n    formatter: function (column, value) {\n        if (column === 'tr_rating') {\n            if (value > 95) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-approved\">' + value + ' %</span>',\n                );\n            } else if (value > 90) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-warning\">' + value + ' %</span>',\n                );\n            } else {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-open\">' + value + ' %</span>',\n                );\n            }\n        }\n        return false;\n    },\n    showColumns: Ember.computed(function () {\n        var columns, fields, key;\n        fields = this.Collector.fields(this.get('form'));\n        columns = [];\n        for (key in fields) {\n            if (key.substring(key.length - 6) !== '_minus') {\n                columns.push(key);\n            }\n        }\n        return columns;\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideHistory: true,\n        }),\n        sortByColumn: 'date-',\n    }),\n    addRowActions: function () {\n        if (this.Collector == null) {\n            return;\n        }\n        return this.set('settings.rowActions', [\n            {\n                text: 'site_safety.formatted_pdf_export',\n                action: (self, items) => {\n                    var fields;\n                    fields = this.Collector.fields(this.get('form'));\n                    return this.createMeasurementPdf(fields, items);\n                },\n            },\n        ]);\n    },\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        createSpecialPdf: function (selected) {\n            var fields;\n            fields = this.Collector.fields(this.get('form'));\n            return this.createMeasurementPdf(fields, selected);\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementDataController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/data/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrDataRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyTrDataRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var form;\n        form = this.modelFor('site-safety.measurement');\n        this.set('form', form);\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.sideload = true;\n            if (Ember.isPresent(params.groupBy)) {\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll(form, params);\n            } else {\n                return this.store.query(form, params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.measurement.data').set('qParams', params);\n        }\n    },\n});\n\n//    setupController: (controller, model) ->\n//#        controller.set 'form', @get 'form'\n//        @_super controller, model\nexport default SiteSafetyTrDataRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4C4iEpOj\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[[23,0,[\\\"form\\\"]],[22,\\\"qParams\\\"],\\\"user.employer,user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[23,0,[\\\"date\\\"]],\\\"date\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.formatted_pdf_export\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[[28,\\\"concat\\\",[\\\"/site_safety/report/tr/data?modal=\\\",[23,0,[\\\"form\\\"]],\\\"%2C\\\"],null]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"remove,overview,edit,history\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"formatter\\\",\\\"settings\\\",\\\"summableFieldTypes\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"settings\\\"]],false,[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/data/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/graphs/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementGraphsController;\n\nimport Ember from 'ember';\n\nimport formattedMixin from '../../../../mixins/sitesafety-formatted-export';\n\nSiteSafetyMeasurementGraphsController = Ember.Controller.extend(formattedMixin, {\n    //    needs: 'site-safety/measurement'\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    queryParams: ['project', 'date'],\n    project_filter: Em.computed('project', 'form', function () {\n        return {\n            form: this.get('form'),\n            name: 'project',\n            type: 'database',\n            value: this.get('project'),\n        };\n    }),\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    project: Ember.computed.alias('measurementController.project'),\n    date: Ember.computed.alias('measurementController.date'),\n    form: Ember.computed.alias('measurementController.form'),\n    dialogs: Ember.inject.service(),\n    intl: Em.inject.service(),\n    arrangedContent: Ember.computed('content', function () {\n        return this.get('content').sortBy('date');\n    }),\n    dataSetter: function () {\n        var data, data_rating, fields, form, headers, mc, measurements, self;\n        self = this;\n        mc = this.get('measurementController');\n        form = mc.get('model');\n        fields = mc.parseFields(form);\n        headers = [this.get('intl').t('date')];\n        fields.forEach(function (item) {\n            return headers.push(item.title);\n        });\n        data = Em.A([headers]);\n        data_rating = Em.A([[this.get('intl').t('date'), this.get('intl').t('tr.rating')]]);\n        measurements = this.get('arrangedContent');\n        measurements.forEach(function (measurement) {\n            var date, field, field_object, i, len, minus, plus, row;\n            if (moment(measurement.get('date')).isAfter(moment().subtract(1, 'years'))) {\n                row = [moment(measurement.get('date')).format('L')];\n                for (i = 0, len = fields.length; i < len; i++) {\n                    field_object = fields[i];\n                    field = field_object.ext;\n                    plus = measurement.get(field + '_plus');\n                    minus = measurement.get(field + '_minus');\n                    if (plus && minus) {\n                        row.push(parseInt(plus, 10) - parseInt(minus, 10));\n                    } else if (plus) {\n                        row.push(parseInt(plus, 10));\n                    } else if (minus) {\n                        row.push(parseInt(minus, 10) * -1);\n                    } else {\n                        row.push(0);\n                    }\n                }\n                data.push(row);\n                date = moment(measurement.get('date')).format('L');\n                if (!isNaN(measurement.get('tr_rating')) && measurement.get('tr_rating') !== null) {\n                    return data_rating.push([date, parseFloat(measurement.get('tr_rating'))]);\n                } else {\n                    return data_rating.push([date, 0]);\n                }\n            }\n        });\n        self.set('data', data);\n        return self.set('data_rating', data_rating);\n    }.observes('arrangedContent.[]', 'content.[]'),\n    actions: {\n        exportNewestPdf: function (project) {\n            var customMeasurement, fields, newest;\n            customMeasurement = this.get('form');\n            newest = this.store\n                .peekAll(customMeasurement)\n                .filter((record) => {\n                    return record.get('project.id') === project;\n                })\n                .sortBy('date')\n                .reverse()\n                .get('firstObject');\n            if (!newest) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('tr.chart.export_newest_pdf_not_found'),\n                );\n            }\n            // export as measurement pdf\n            fields = this.get('Collector').fields(customMeasurement);\n            return this.createMeasurementPdf(fields, [newest]);\n        },\n        filterChanged: function (value, fieldName) {\n            if (fieldName === 'project') {\n                if (value == null) {\n                    return this.set('project', '');\n                } else {\n                    return this.set('project', value.id);\n                }\n            }\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementGraphsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/graphs/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementGraphsRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyMeasurementGraphsRoute = Ember.Route.extend({\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var parentParams;\n        //        form = @modelFor 'site-safety.measurement'\n        parentParams = this.paramsFor('site-safety.measurement');\n        if (params.project === 'undefined') {\n            delete params.project;\n        }\n        params.sideload = true;\n        return this.store.query('measurement_' + parentParams.measurement, params);\n    },\n});\n\nexport default SiteSafetyMeasurementGraphsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"NyjY9gkn\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"project_filter\\\"]]],[[\\\"change\\\",\\\"useAsFilter\\\",\\\"_class\\\"],[\\\"filterChanged\\\",true,\\\"form-control\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"range-picker\\\",null,[[\\\"autoApply\\\",\\\"ranges\\\",\\\"opens\\\",\\\"value\\\"],[true,false,\\\"right\\\",[24,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"content\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row col-xs-12 export-pdf-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"exportNewestPdf\\\",[24,[\\\"project\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[10,\\\"disabled\\\",\\\"\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"tr.chart.select_project\\\"],null]]]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"measurement.chart.rating\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"export\\\",\\\"Xmax\\\",\\\"Xmin\\\"],[[24,[\\\"data_rating\\\"]],true,100,0]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"measurement.chart.individual_ratings\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"export\\\"],[[24,[\\\"data\\\"]],true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/graphs/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"z/Q6p8x9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/notice-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyNoticeComponent;\n\nimport Ember from 'ember';\n\nSiteSafetyNoticeComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    isSaved: false,\n    didReceiveAttrs: function () {\n        var found, i, len, option, ref;\n        if (this.get('model.desc') && this.get('options')) {\n            found = false;\n            ref = this.get('options');\n            for (i = 0, len = ref.length; i < len; i++) {\n                option = ref[i];\n                if (option.string === this.get('model.desc')) {\n                    found = true;\n                    break;\n                }\n            }\n            if (!found) {\n                return this.set(\n                    'selectedDesc',\n                    this.get('intl').t('site_safety.notice.desc.other'),\n                );\n            } else {\n                return this.set('selectedDesc', this.get('model.desc'));\n            }\n        }\n    },\n    showDropdown: Ember.computed.gt('options.length', 0),\n    showDesc: Em.computed('selectedDesc', 'showDropdown', function () {\n        if (!this.get('showDropdown')) {\n            return true;\n        }\n        if (this.get('selectedDesc') === this.get('intl').t('site_safety.notice.desc.other')) {\n            return true;\n        }\n    }),\n    /*\n  descObserver: Em.observer 'selectedDesc', ->\n      desc = @get 'selectedDesc'\n      if desc != @get('intl').t(\"site_safety.notice.desc.other\")\n          @set 'model.desc', @get 'selectedDesc'\n      else\n          @set 'model.desc', \"\"\n\n  descObserver: Em.on('init', Em.observer('selectedDesc','showDropdown', ->\n      desc =  @get 'selectedDesc'\n      if @get('showDropdown')\n          if desc == @get('intl').t(\"site_safety.notice.desc.other\").string\n              @set 'showDesc', true\n              @set 'model.desc', \"\"\n          else\n              @set 'showDesc',false\n              @set 'model.desc', desc\n  ))\n  */\n    fields: Em.computed(function () {\n        var fields, fieldsObject, key, value;\n        fieldsObject = this.Collector.fields('trnotice');\n        fields = [];\n        for (key in fieldsObject) {\n            value = fieldsObject[key];\n            if ((!value.features.hide && key !== 'project') || key === 'noticedesc') {\n                Em.set(value, 'ext', key);\n                //Em.set value, 'label', value.name || @get('intl').t('trnotice.' + value.ext)\n                switch (key) {\n                    case 'desc':\n                        Em.set(value, 'sortOrder', 0);\n                        break;\n                    case 'employer':\n                        Em.set(value, 'sortOrder', 1);\n                        break;\n                    case 'user':\n                        Em.set(value, 'sortOrder', 2);\n                        break;\n                    case 'date':\n                        Em.set(value, 'sortOrder', 3);\n                        break;\n                    case 'place':\n                        Em.set(value, 'sortOrder', 4);\n                        break;\n                    case 'noticedesc':\n                        Em.set(value, 'sortOrder', 5);\n                        break;\n                    case 'email':\n                        Em.set(value, 'sortOrder', 6);\n                        break;\n                    case 'pic':\n                        Em.set(value, 'sortOrder', 7);\n                        break;\n                    default:\n                        Em.set(value, 'sortOrder', 8);\n                }\n                fields.push(value);\n            }\n        }\n        return fields.sortBy('sortOrder');\n    }),\n    setProject: Em.on(\n        'init',\n        Em.observer('measurement.project', function () {\n            return this.set('model.project', this.get('measurement.project'));\n        }),\n    ),\n    start: Ember.computed('model', function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    saveText: Ember.computed(function () {\n        return this.get('intl').t('site_safety.notice.save');\n    }),\n    fieldRoute: Em.computed('model.pic', function () {\n        return {\n            form: this.get('model.constructor.modelName'),\n            type: 'hdfile',\n            value: this.get('model.pic'),\n            features: this.get('Collector').field(this.get('model.constructor.modelName'), 'pic')\n                .features,\n            name: 'pic',\n        };\n    }),\n    actions: {\n        customChangeValue: function (value, fieldName) {\n            return this.set('model.pic', value);\n        },\n        changeValue: function (value, field, set = true) {\n            if (field === 'email') {\n                this.send('validateEmail');\n            } else if (field === 'user' && this.get('model').get('user.id')) {\n                this.get('store')\n                    .query('user', {\n                        id: this.get('model').get('user.id'),\n                    })\n                    .then((user) => {\n                        return this.get('model').set('email', user.get('firstObject.email'));\n                    });\n            }\n            if (set && !this.get('model.isDeleted')) {\n                return this.get('model').set(field, value);\n            }\n        },\n        validateDesc: function () {\n            if (this.get('model.desc')) {\n                this.set('error', false);\n                return this.set('disabled', false);\n            } else {\n                this.set('error', this.get('intl').t('site_safety.notice.desc_missing'));\n                return this.set('disabled', true);\n            }\n        },\n        validateEmail: function () {\n            var re, valid;\n            this.set('error', false);\n            if (this.get('model.email')) {\n                re =\n                    /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$/i;\n                valid = re.test(this.get('model.email'));\n                if (!valid) {\n                    this.set('error', this.get('intl').t('site_safety.notice.email.not_valid'));\n                }\n                return this.set('saveText', this.get('intl').t('site_safety.notice.save_and_send'));\n            } else {\n                return this.set('saveText', this.get('intl').t('site_safety.notice.save'));\n            }\n        },\n        saveNotice: function () {\n            if (!this.get('showDesc')) {\n                this.set('model.desc', this.get('selectedDesc'));\n            }\n            this.send('validateDesc');\n            if (this.get('error')) {\n                return;\n            }\n            this.set('isSaved', true);\n            this.set('show_add_notice', true);\n            this.set('notice', false);\n            if (this.get('addToSavedNotices')) {\n                return this.addToSavedNotices(this.get('model'));\n            }\n        },\n        removeNotice: function () {\n            var record, self;\n            record = this.get('model');\n            self = this;\n            this.get('noticesArr').removeObject(record);\n            record.rollbackAttributes();\n            if (this.get('noticesArr.length') === 0) {\n                self.set('notice', false);\n                return self.set('edit', false);\n            } else {\n                return self.set('show_add_notice', true);\n            }\n        },\n        setUser: function (user) {\n            this.set('model.user', user);\n            if (user.get('email')) {\n                return this.set('model.email', user.get('email'));\n            } else {\n                return this.set('model.email', void 0);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyNoticeComponent;\n","export default Ember.HTMLBars.template({\"id\":\"FwFhE/M7\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"isSaved\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"header.path.addnotice\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeNotice\\\"],null]]],{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"ext\\\"]],\\\"desc\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDropdown\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"fast-select\\\",null,[[\\\"value\\\",\\\"content\\\",\\\"class\\\",\\\"name\\\"],[[24,[\\\"selectedDesc\\\"]],[24,[\\\"options\\\"]],\\\"form-control add-fields\\\",\\\"description\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showDesc\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"key-up\\\",\\\"placeholder\\\",\\\"name\\\"],[\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"desc\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateDesc\\\"],null],[28,\\\"t\\\",[\\\"site_safety.notice.desc.placeholder\\\"],null],\\\"OtherDesc\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"ext\\\"]],\\\"pic\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"remove\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"removeFile\\\",\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"ext\\\"]],\\\"location\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"model\\\",\\\"location\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-container\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[28,\\\"concat\\\",[\\\"trnotice.\\\",[23,1,[\\\"ext\\\"]]],null],\\\"changeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[23,0,[\\\"error\\\"]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[12,\\\"name\\\",\\\"saveNotice\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveNotice\\\"]],[8],[1,[22,\\\"saveText\\\"],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/notice-component/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementNoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyMeasurementNoticesController = GeneralReportController.extend({\n    //    needs: 'site-safety/measurement'\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    project: Ember.computed.alias('measurementController.project'),\n    date: Ember.computed.alias('measurementController.date'),\n    queryParams: ['status', 'project', 'date', 'page', 'employer', 'groupBy'],\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    arrangedContent: Ember.computed('model.[]', function () {\n        return this.get('content').sortBy('date');\n    }),\n    statusSelector: Ember.computed.alias('measurementController.statusSelector'),\n    search: false,\n    status: Ember.computed.alias('measurementController.status'),\n    form: 'trnotice',\n    showColumns: ['date', 'status', 'desc', 'user', 'project', 'pic'],\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementNoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrNoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyTrNoticesRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var form;\n        form = this.modelFor('site-safety.measurement');\n        params = this._super(params);\n        params.type = form.replace('_', '-');\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            if (params.date) {\n                params.created = params.date;\n                delete params.date;\n            }\n            params.sideload = true;\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('trnotice', params);\n            } else {\n                return this.store.query('trnotice', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.measurement.notices').set('qParams', params);\n        }\n    },\n    actions: {\n        didTransition: function () {\n            return this.set('controller.statusSelector', true);\n        },\n    },\n});\n\nexport default SiteSafetyTrNoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"s7o3aj5j\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"trnotice\\\",[23,0,[\\\"qParams\\\"]],\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"created\\\",\\\"type\\\"],[[23,0,[\\\"date\\\"]],[23,0,[\\\"qParams\\\",\\\"type\\\"]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"trnotice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"status\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",\\\"trnotice\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/person-in-charge/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementPersonInChargeComponent;\n\nimport Ember from 'ember';\n\nimport DatabaseField from '../../../collector/fields/database-field/component';\n\nSiteSafetyMeasurementPersonInChargeComponent = DatabaseField.extend({\n    layout: 'collector/fields/database-field',\n    _class: 'form-control',\n    ObservePrompt: '',\n    field: Em.computed(function () {\n        var arr;\n        return (arr = {\n            form: 'tr',\n            name: 'user',\n            placeholder: 'site_safety.notice.person.placeholder',\n        });\n    }),\n    actions: {\n        focusIn: function () {\n            return this.set('showOptions', true);\n        },\n        focusOut: function () {\n            return this.set('showOptions', false);\n        },\n        select: function (option) {\n            if (!option) {\n                option = {};\n            }\n            return this._super(option);\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementPersonInChargeComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyMeasurementRoute = Ember.Route.extend({\n    dialogs: Ember.inject.service(),\n    model: function (params) {\n        return 'measurement_' + params.measurement;\n    },\n    actions: {\n        delete: function (row) {\n            return this.get('dialogs')\n                .confirm('Haluatko varmasti poistaa rivin')\n                .then((con) => {\n                    if (con) {\n                        return row.destroyRecord();\n                    }\n                });\n        },\n        edit: function (row) {\n            row.set('editClass', 'TrEditText');\n            return row.set('edit', true);\n        },\n        save: function (row) {\n            var self;\n            self = this;\n            //            row.set('user', @get('controller.controllers.application.current_user'))\n            //            row.set('date', moment().format('YYYY-MM-DD'))\n            return row.save().then(function () {\n                row.set('edit', false);\n                return row.set('editClass', '');\n            });\n        },\n        //                self.get('controller').dataSetter()\n        cancel: function (row) {\n            row.rollbackAttributes();\n            row.set('edit', false);\n            return row.set('editClass', '');\n        },\n        didTransition: function () {\n            return this.set('controller.statusSelector', false);\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/row-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyRowComponent;\n\nimport Ember from 'ember';\n\nSiteSafetyRowComponent = Ember.Component.extend({\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    store: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    didReceiveAttrs: function () {\n        if (this.get('model.' + this.get('name') + '_plus')) {\n            this.set('plus', this.get('model.' + this.get('name') + '_plus'));\n        }\n        if (this.get('model.' + this.get('name') + '_minus')) {\n            return this.set('minus', this.get('model.' + this.get('name') + '_minus'));\n        }\n    },\n    hasInfo: Em.computed('name', function () {\n        return this.get('intl').exists('measurement.info.' + this.get('name'));\n    }),\n    plus: 0,\n    minus: 0,\n    minusObserver: function () {\n        var value;\n        this.set('model.' + this.get('name') + '_minus', this.get('minus'));\n        // HTML input type=\"number\" component is poorly implemented so: Limit value to max 9999 && do not accept decimal values && clean number..\n        if (this.get('minus').length > 4) {\n            this.set('minus', this.get('minus').substring(0, 4));\n        }\n        if (this.get('minus') > 9999) {\n            this.set('minus', 9999);\n        }\n        value = this.get('minus').toString();\n        if (value.indexOf('.') > -1) {\n            this.set('minus', 0);\n        }\n        value = parseInt(this.get('minus'), 10);\n        if (isNaN(value)) {\n            return this.set('minus', 0);\n        } else {\n            return this.set('minus', value);\n        }\n    }.observes('minus'),\n    plusObserver: function () {\n        var value;\n        this.set('model.' + this.get('name') + '_plus', this.get('plus'));\n        // HTML input type=\"number\" component is poorly implemented so: Limit value to max 9999 && do not accept decimal values && clean number..\n        if (this.get('plus').length > 4) {\n            this.set('plus', this.get('plus').substring(0, 4));\n        }\n        if (this.get('plus') > 9999) {\n            this.set('plus', 9999);\n        }\n        value = this.get('plus').toString();\n        if (value.indexOf('.') > -1) {\n            this.set('plus', 0);\n        }\n        value = parseInt(this.get('plus'), 10);\n        if (isNaN(value)) {\n            return this.set('plus', 0);\n        } else {\n            return this.set('plus', value);\n        }\n    }.observes('plus'),\n    actions: {\n        toggleNotice: function () {\n            if (this.get('edit') || this.get('notice')) {\n                this.set('edit', false);\n                return this.set('notice', false);\n            } else {\n                this.set('notice', true);\n                this.set('edit', true);\n                return this.set('show_add_notice', true);\n            }\n        },\n        plus: function () {\n            return this.set('plus', 1 + this.get('plus'));\n        },\n        minus: function () {\n            if (!this.get('notice')) {\n                this.set('unsavedNotices', true);\n                this.set('minus', 1 + this.get('minus'));\n                this.set('model.' + this.get('name') + '_minus', this.get('minus'));\n                if (this.get('notices_on')) {\n                    this.send('addNotice');\n                    return this.set('notice', true);\n                }\n            } else {\n                return this.get('notifications').warning(\n                    this.get('intl').t('site_safety.notice.unsaved_notification'),\n                    {\n                        autoClear: true,\n                    },\n                );\n            }\n        },\n        addNotice: function () {\n            var add, row, tmpRows;\n            add = true;\n            this.get('noticesArr').forEach(function (ntc) {\n                if (ntc.get('isDirty')) {\n                    return (add = false);\n                }\n            });\n            if (add) {\n                this.set('show_add_notice', false);\n                row = this.get('store').createRecord('trnotice', {\n                    date: moment().add(3, 'days').format('YYYY-MM-DD'),\n                    name: this.get('name'),\n                });\n                // noticesArr is query-result from server, so we cannot add directly to it..\n                // this is a bit ugly piece of code, but it works\n                if (this.get('noticesArr')) {\n                    tmpRows = [];\n                    tmpRows.push(row);\n                    this.get('noticesArr').forEach((notice) => {\n                        return tmpRows.push(notice);\n                    });\n                    return this.set('noticesArr', tmpRows);\n                } else {\n                    //@get('noticesArr').pushObject(row)\n                    return this.get('noticesArr').pushObject(row);\n                }\n            }\n        },\n        openInfo: function (row) {\n            return this.get('dialogs').alert(this.get('intl').t('measurement.info.' + row));\n        },\n    },\n});\n\nexport default SiteSafetyRowComponent;\n","export default Ember.HTMLBars.template({\"id\":\"OzuUo5Q/\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading clearfix\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"hasInfo\\\"]]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-default pull-left\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openInfo\\\",[24,[\\\"name\\\"]]]],[8],[1,[28,\\\"standard-icon\\\",[\\\"info\\\"],null],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[22,\\\"title\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"notices_on\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-success pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleNotice\\\",[24,[\\\"name\\\"]]]],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-warning pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleNotice\\\",[24,[\\\"name\\\"]]]],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"standard-icon\\\",[\\\"edit\\\"],null],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hidden-xs hidden-sm\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.edit\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group btn-group-justified\\\"],[10,\\\"role\\\",\\\"group\\\"],[10,\\\"aria-label\\\",\\\"...\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success btn-sm\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"plus\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-thumbs-up\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.plus\\\"],null],false],[0,\\\"\\\\n                    : \\\"],[1,[22,\\\"plus\\\"],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-sm\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"minus\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-thumbs-down\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.minus\\\"],null],false],[0,\\\"\\\\n                    : \\\"],[1,[22,\\\"minus\\\"],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row-success\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"max\\\",\\\"step\\\",\\\"size\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"0\\\",\\\"10000\\\",\\\"1\\\",\\\"5\\\",\\\"noinherit-color form-control\\\",[24,[\\\"plus\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row-danger\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"max\\\",\\\"step\\\",\\\"size\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"0\\\",\\\"10000\\\",\\\"1\\\",\\\"5\\\",\\\"noinherit-color form-control\\\",[24,[\\\"minus\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"noticesArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-notice\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"outer\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive-sm table-striped \\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.notice.desc\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.notice.person\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.notice.fixdate\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"noticesArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"desc\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"user\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"user\\\",\\\"trnotice\\\",[23,2,[\\\"user\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"noticesArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"site-safety/measurement/notice-component\\\",null,[[\\\"model\\\",\\\"measurement\\\",\\\"name\\\",\\\"options\\\",\\\"notice\\\",\\\"show_add_notice\\\",\\\"noticesArr\\\",\\\"edit\\\",\\\"addToSavedNotices\\\"],[[23,1,[]],[24,[\\\"model\\\"]],[24,[\\\"name\\\"]],[24,[\\\"options\\\"]],[24,[\\\"notice\\\"]],[24,[\\\"show_add_notice\\\"]],[24,[\\\"noticesArr\\\"]],[24,[\\\"edit\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"addToSavedNotices\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show_add_notice\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block btn-warning\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNotice\\\"]],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.notice.add\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/row-component/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"/+Klt1a6\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/observation/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationAddController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nSiteSafetyObservationAddController = GeneralAddController.extend();\n\nexport default SiteSafetyObservationAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/observation/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nSiteSafetyObservationAddRoute = GeneralAddRoute.extend({\n    modelName: 'site_safety_observation',\n    controllerName: 'site_safety.observation.add',\n    afterSave: 'site_safety.report.observation',\n});\n\nexport default SiteSafetyObservationAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"PwTuiN43\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/observation/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/observation/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nSiteSafetyObservationEditController = GeneralAddController.extend({\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n});\n\nexport default SiteSafetyObservationEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/observation/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nSiteSafetyObservationEditRoute = GeneralAddRoute.extend({\n    modelName: 'site_safety_observation',\n    controllerName: 'site_safety.observation.edit',\n    //savedRoute: 'site_safety.observation.index'\n    afterSave: 'site_safety.report.observation',\n    edit: true,\n});\n\nexport default SiteSafetyObservationEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4hb+5H0H\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/observation/edit/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"eMRpE9Ao\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/observation/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/event/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyEventController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nSiteSafetyEventController = GeneralReportController.extend({\n    form: 'site_safety_event',\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    queryParams: ['status', 'page', 'employer', 'creator', 'groupBy', 'project'],\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'creator',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    //        Em.Object.create({field: \"user-group\"})\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            //            hideEdit: true\n            //            hideHistory: true\n            editRoute: {\n                modal: true,\n            },\n        }),\n        massedit: true,\n        rowActions: [],\n        sortByColumn: 'created-',\n    }),\n    search: false,\n    status: 'all',\n    limit: 25,\n    groupBy: null,\n    project: null,\n    user: null,\n    q: null,\n    showColumns: ['created', 'creator', 'status', 'desc', 'project', 'pic'],\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyEventController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/event/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyEventRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyEventRoute = GeneralReportRoute.extend({\n    form: 'site_safety_event',\n    capi: service(),\n    flags: service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        creator: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.sideload = true;\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('site_safety_event', params);\n            } else {\n                return this.store.query('site_safety_event', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.event').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyEventRoute;\n","export default Ember.HTMLBars.template({\"id\":\"sUcspYLN\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"site_safety_event\\\",[22,\\\"qParams\\\"],[28,\\\"hash\\\",null,[[\\\"order\\\"],[\\\"created\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/site_safety/report/event?modal=site-safety-event%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"status\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"site_safety_event\\\",[24,[\\\"status\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\",\\\"count\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",\\\"site_safety_event\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/event/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyReportController;\n\nimport Ember from 'ember';\n\nSiteSafetyReportController = Ember.Controller.extend({\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    project: null,\n    group: null,\n});\n\nexport default SiteSafetyReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/data/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrDataController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from 'tt4/controllers/general-report';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyMvrDataController = GeneralReportController.extend(formattedMixin, {\n    intl: Em.inject.service(),\n    flags: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    queryParams: ['project', 'date', 'page', 'groupBy'],\n    arrangedContent: Ember.computed('model.[]', function () {\n        return this.get('content').sortBy('date');\n    }),\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    form: 'mvr',\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    init: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    formatter: function (column, value) {\n        if (column === 'mvr_rating') {\n            if (value > 95) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-approved\">' + value + ' %</span>',\n                );\n            } else if (value > 90) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-warning\">' + value + ' %</span>',\n                );\n            } else {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-open\">' + value + ' %</span>',\n                );\n            }\n        }\n        return false;\n    },\n    showColumns: [\n        'status',\n        'project',\n        'user',\n        'date',\n        'mvr_rating',\n        'equipment_plus',\n        'order_plus',\n        'protection_plus',\n        'road_plus',\n        'working_plus',\n        'foreman_sign',\n        'worker_sign',\n    ],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                dynamic: true,\n                route: 'site_safety.measurement.add.measurement',\n                fields: ['id', 'constructor.modelName', 'project.id'],\n            },\n            historyRoute: 'site_safety.mvr.history',\n            //hideEdit: true\n            hideHistory: true,\n            disableStatus: 'approved',\n        }),\n        sortByColumn: 'date-',\n    }),\n    addRowActions: function () {\n        var fields, intl;\n        intl = this.get('intl');\n        if (this.Collector == null) {\n            return;\n        }\n        fields = this.Collector.fields('mvr');\n        return this.set('settings.rowActions', [\n            {\n                text: 'site_safety.formatted_pdf_export',\n                action: (self, items) => {\n                    return this.createMeasurementPdf(fields, items);\n                },\n            },\n        ]);\n    },\n    actions: {\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute(\n                'site_safety.measurement.add.measurement',\n                row.id,\n                'mvr',\n                row.project.id,\n            );\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        createSpecialPdf: function (selected) {\n            // if selected is not defined, use dialogs-service to show the user that they need to select something\n            if (selected == null || selected.length === 0) {\n                return this.get('dialogs').alert(\n                    this.intl.t('site_safety.formatted_pdf_export_select'),\n                );\n            } else {\n                let fields;\n                fields = this.Collector.fields('mvr');\n                return this.createMeasurementPdf(fields, selected);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyMvrDataController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/data/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrDataRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from 'tt4/routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyMvrDataRoute = GeneralReportRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    capi: service(),\n    flags: service(),\n    beforeModel: function (transition) {\n        var c;\n        this._super(transition);\n        c = this.get('Collector');\n        if (transition.targetName !== 'site_safety.mvr.notices' && !c.testNeedsOne('mvr@add')) {\n            transition.abort();\n            return this.transitionTo('site_safety.mvr.notices');\n        }\n    },\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.sideload = true;\n            //        params.order = \"date-\"\n            if (Ember.isPresent(params.groupBy)) {\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('mvr', params);\n            } else {\n                return this.store.query('mvr', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.mvr.data').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyMvrDataRoute;\n","export default Ember.HTMLBars.template({\"id\":\"sukCFb+x\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"mvr\\\",[22,\\\"qParams\\\"],\\\"date,user,project,group,q\\\",\\\"user.employer,user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[23,0,[\\\"date\\\"]],\\\"date-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.formatted_pdf_export\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/site_safety/report/tr/data?modal=mvr%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[\\\"@exportPdf\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[\\\"@customPdfExport\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\",\\\"@hideEditStatus\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null],\\\"remove,overview,edit\\\",\\\"approved\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"formatter\\\",\\\"settings\\\",\\\"summableFieldTypes\\\",\\\"showPdfExport\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"settings\\\"]],false,false,[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/mvr/data/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/graphs/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrGraphsController;\n\nimport Ember from 'ember';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nimport chartComp from 'tt4/components/chart-comp';\n\nSiteSafetyMvrGraphsController = Ember.Controller.extend(formattedMixin, {\n    mvrController: Ember.inject.controller('site_safety/report/mvr'),\n    queryParams: ['project', 'date', 'group'],\n    project: Ember.computed.alias('mvrController.project'),\n    date: Ember.computed.alias('mvrController.date'),\n    group: Ember.computed.alias('mvrController.group'),\n    intl: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                form: 'mvr',\n                type: 'database',\n                value: this.get('project'),\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'date',\n                form: 'mvr',\n                type: 'date',\n                value: this.get('date'),\n            }),\n            Em.Object.create({\n                field: 'group',\n                form: 'mvr',\n                type: 'database',\n                value: this.get('group'),\n                singleselect: true,\n            }),\n        ]);\n    }),\n    pie_options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 350,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n    },\n    //        slices: {\n    //            1: {offset: 0.02}\n    //            2: {offset: 0.02}\n    //            3: {offset: 0.02}\n    //        }\n    dataSetter: function () {\n        var data,\n            data_rating,\n            data_rating_pie,\n            pie_over90under95,\n            pie_over95,\n            pie_under90,\n            self,\n            trs;\n        self = this;\n        data = Em.A([\n            [\n                this.get('intl').t('date'),\n                this.get('intl').t('mvr.title.working'),\n                this.get('intl').t('mvr.title.equipment'),\n                this.get('intl').t('mvr.title.protection'),\n                this.get('intl').t('mvr.title.road'),\n                this.get('intl').t('mvr.title.order'),\n            ],\n        ]);\n        data_rating = Em.A([[this.get('intl').t('date'), this.get('intl').t('mvr.rating')]]);\n        data_rating_pie = Em.A([\n            [this.get('intl').t('mvr.rating'), this.get('intl').t('mvr.rating')],\n        ]);\n        pie_under90 = 0;\n        pie_over90under95 = 0;\n        pie_over95 = 0;\n        trs = this.get('model.mvr');\n        if (!trs) {\n            return;\n        }\n        trs.forEach(function (tr, idx) {\n            var field, fields, i, len, minus, plus, row, tr_minus, tr_plus;\n            row = [moment(tr.get('date')).format('L')];\n            tr_plus = tr.getProperties(\n                'working_plus',\n                'equipment_plus',\n                'protection_plus',\n                'road_plus',\n                'order_plus',\n            );\n            tr_minus = tr.getProperties(\n                'working_minus',\n                'equipment_minus',\n                'protection_minus',\n                'road_minus',\n                'order_minus',\n            );\n            fields = ['working', 'equipment', 'protection', 'road', 'order'];\n            for (i = 0, len = fields.length; i < len; i++) {\n                field = fields[i];\n                plus = 0;\n                minus = 0;\n                if (tr_plus[field + '_plus']) {\n                    plus = parseInt(tr_plus[field + '_plus'], 10);\n                }\n                if (tr_minus[field + '_minus']) {\n                    minus = parseInt(tr_minus[field + '_minus'], 10);\n                }\n                row.push(parseFloat(((plus / (plus + minus)) * 100).toFixed(2)));\n            }\n            if (Ember.isEmpty(self.get('selectedIndex')) || self.get('selectedIndex') === idx) {\n                data.push(row);\n            }\n            if (!isNaN(tr.get('mvr_rating')) && tr.get('mvr_rating') !== null) {\n                data_rating.push([\n                    moment(tr.get('date')).format('L'),\n                    parseFloat(tr.get('mvr_rating')),\n                ]);\n                if (tr.get('mvr_rating') < 90) {\n                    pie_under90++;\n                }\n                if (tr.get('mvr_rating') >= 90 && tr.get('mvr_rating') < 95) {\n                    pie_over90under95++;\n                }\n                if (tr.get('mvr_rating') >= 95) {\n                    return pie_over95++;\n                }\n            } else {\n                return data_rating.push([moment(tr.get('date')).format('L'), 0]);\n            }\n        });\n        data_rating_pie.push([this.get('intl').t('mvr_rating_pie_under90'), pie_under90]);\n        data_rating_pie.push([\n            this.get('intl').t('mvr_rating_pie_over90under95'),\n            pie_over90under95,\n        ]);\n        data_rating_pie.push([this.get('intl').t('mvr_rating_pie_over95'), pie_over95]);\n        self.set('data', data);\n        self.set('data_rating', data_rating);\n        return self.set('data_rating_pie', data_rating_pie);\n    }.observes('model.mvr.[]', 'intl.primaryLocale', 'selectedIndex'),\n    actions: {\n        handleSelection: function (sel) {\n            if (this.get('selectedIndex') === sel[0].row) {\n                return this.set('selectedIndex', null);\n            } else {\n                return this.set('selectedIndex', sel[0].row);\n            }\n        },\n        filterChanged: function (value, field) {\n            if (value == null) {\n                return this.set(field, '');\n            } else if (field === 'date') {\n                return this.set(field, value);\n            } else {\n                return this.set(field, value.id);\n            }\n        },\n        exportNewestPdf: function (project) {\n            var charts, fields, newest;\n            // get newest mvr record\n            newest = this.store\n                .peekAll('mvr')\n                .filter((record) => {\n                    return record.get('project.id') === project;\n                })\n                .sortBy('date')\n                .reverse()\n                .get('firstObject');\n            if (!newest) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('tr.chart.export_newest_pdf_not_found'),\n                );\n            }\n            // export as measurement pdf\n            fields = this.get('Collector').fields('mvr');\n            charts = [\n                {\n                    url: this.get('piechart').getImageURI(),\n                    width: 300,\n                    title: this.get('intl').t('mvr.chart.mvr_rating_pie'),\n                },\n                {\n                    url: this.get('datachart').getImageURI(),\n                    title: this.get('intl').t('mvr.chart.measurement_ratings'),\n                },\n                {\n                    url: this.get('dataratingchart').getImageURI(),\n                    title: this.get('intl').t('mvr.chart.mvr_rating'),\n                },\n            ];\n            return this.createMeasurementPdf(fields, [newest], 'download', charts);\n        },\n    },\n});\n\nexport default SiteSafetyMvrGraphsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/graphs/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrGraphsRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyMvrGraphsRoute = Ember.Route.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function (transition) {\n        var c;\n        this._super(transition);\n        c = this.get('Collector');\n        if (transition.targetName !== 'site_safety.mvr.notices' && !c.testNeedsOne('mvr@add')) {\n            transition.abort();\n            return this.transitionTo('site_safety.report.mvr.notices');\n        }\n    },\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var date, monthAgo, store;\n        if (params.project === 'undefined') {\n            delete params.project;\n        }\n        if (!params.group) {\n            delete params.group;\n        }\n        params.sideload = true;\n        params.order = 'date';\n        store = this.get('store');\n        monthAgo = moment().subtract(1, 'month').format('YYYY-MM-DD_');\n        date = moment().format('YYYY-MM-DD');\n        return Ember.RSVP.hash({\n            mvr: store.query('mvr', params),\n            noticesSelected: store.query('trnotice', {\n                type: 'mvr',\n                limit: 100,\n                created: monthAgo.concat(date),\n                sideload: params.sideload,\n                project: params.project,\n                group: params.group,\n            }),\n            notices: store.query('trnotice', {\n                type: 'mvr',\n                limit: 1,\n                created: params.date,\n                project: params.project,\n                group: params.group,\n            }),\n            not_solved: store.query('trnotice', {\n                type: 'mvr',\n                limit: 1,\n                created: params.date,\n                status: 'open',\n                project: params.project,\n                group: params.group,\n            }),\n            overdue: store.query('trnotice', {\n                type: 'mvr',\n                created: params.date,\n                date: params.date,\n                status: 'open',\n                limit: 1,\n                project: params.project,\n                group: params.group,\n            }),\n        });\n    },\n});\n\nexport default SiteSafetyMvrGraphsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"U/7x4N/G\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"hideClearFilters\\\"],[[24,[\\\"filters\\\"]],\\\"mvr\\\",\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row col-xs-12 export-pdf-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"exportNewestPdf\\\",[24,[\\\"project\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[10,\\\"disabled\\\",\\\"\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"tr.chart.select_project\\\"],null]]]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row site-safety-measurement-row-container\\\"],[8],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-container col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.mvr.notices\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"notices-graph\\\",null,[[\\\"all\\\",\\\"overdue\\\",\\\"not_solved\\\"],[[24,[\\\"model\\\",\\\"notices\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"overdue\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"not_solved\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.mvr.data\\\"]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"chart-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"mvr.chart.mvr_rating_pie\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"mvr\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notices-graph-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"notices-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\",\\\"chart\\\"],[[24,[\\\"data_rating_pie\\\"]],\\\"pie\\\",\\\"#D9534F,#FFC56C,#5CB85C\\\",[24,[\\\"pie_options\\\"]],[24,[\\\"piechart\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"mvr\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"mvr.chart.measurement_ratings\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"type\\\",\\\"data\\\",\\\"export\\\",\\\"chart\\\"],[\\\"column\\\",[24,[\\\"data\\\"]],true,[24,[\\\"datachart\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"mvr.chart.mvr_rating\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"selectionHandler\\\",\\\"export\\\",\\\"Xmax\\\",\\\"Xmin\\\",\\\"chart\\\"],[[24,[\\\"data_rating\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"handleSelection\\\"],null],true,100,0,[24,[\\\"dataratingchart\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/mvr/graphs/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrNoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from 'tt4/controllers/general-report';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyMvrNoticesController = GeneralReportController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Em.inject.service(),\n    flags: Em.inject.service(),\n    mvrController: Ember.inject.controller('site_safety/report/mvr'),\n    queryParams: ['status', 'page', 'employer', 'user', 'groupBy', 'project'],\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    arrangedContent: Ember.computed('model.[]', function () {\n        return this.get('content').sortBy('date');\n    }),\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({}),\n        //            editRoute: 'site_safety.mvr.edit'\n        //            historyRoute: 'site_safety.mvr.history'\n        //            hideEdit: true\n        //            hideHistory: true\n        massedit: true,\n        rowActions: [],\n    }),\n    statusSelector: Ember.computed.alias('mvrController.statusSelector'),\n    search: false,\n    status: 'all',\n    form: 'trnotice',\n    showColumns: ['date', 'status', 'desc', 'user', 'project', 'pic'],\n    emailValid: Em.A([]),\n    emailNotValid: Em.A([]),\n    sentToEmails: Em.A([]),\n    extraData: {\n        type: 'mvr',\n    },\n    init_functions: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    addRowActions: function () {\n        var c, fields, intl, self2;\n        self2 = this;\n        intl = this.get('intl');\n        if (this.Collector == null) {\n            return;\n        }\n        c = this.get('Collector');\n        fields = c.fields('trnotice');\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('site_safety.action.send_notice_email'),\n            action: function (self, notifications) {\n                return self2.emailAction(self, self2, notifications);\n            },\n        });\n    },\n    emailAction: function (self, self2, notifications) {\n        var c, emailNotValid, emailsArr, fields, intl;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        fields = c.fields('trnotice');\n        emailNotValid = self2.get('emailNotValid');\n        notifications.forEach(function (notification) {\n            var user, username;\n            if (!notification.get('email')) {\n                user = notification.get('user');\n                username = user.get('lastname') + ' ' + user.get('firstname');\n                if (emailNotValid.indexOf(username) < 0) {\n                    return emailNotValid.push(username);\n                }\n            } else {\n                //if emailNotValid.indexOf(notification.get('email')) < 0\n                //    emailNotValid.push(notification.get('user'))\n                return self2.get('emailValid').push(notification);\n            }\n        });\n        self2.set('emailModalTitle', intl.t('site_safety.action.email.modal_title'));\n        //if nothing selected\n        if (self2.get('emailNotValid.length') === 0 && self2.get('emailValid.length') === 0) {\n            self2.set('emailModalText', intl.t('site_safety.action.email.nothing_found'));\n            self2.set('showEmailModal', true);\n            return;\n        }\n        //if only not valid emails\n        if (self2.get('emailValid.length') === 0) {\n            self2.set('emailModalSent', true);\n            self2.set('showEmailModal', true);\n            return;\n        }\n        //send credentials to valid email\n        emailsArr = self2.get('sentToEmails');\n        self2.get('emailValid').forEach(function (notification) {\n            var email,\n                emailContent,\n                field,\n                file,\n                i,\n                len,\n                linebreak,\n                obj,\n                pics,\n                ref,\n                tmp_file,\n                user,\n                userString,\n                username,\n                value;\n            user = notification.get('user');\n            username =\n                user.get('lastname') +\n                ' ' +\n                user.get('firstname') +\n                ' (' +\n                notification.get('email') +\n                ')';\n            if (emailsArr.indexOf(username) < 0) {\n                emailsArr.push(username);\n            }\n            emailContent = [];\n            emailContent.push(self2.get('intl').t('site_safety.notice.email_content.content'));\n            pics = [];\n            linebreak = '<br>';\n            for (field in fields) {\n                obj = fields[field];\n                if (\n                    obj['features'] != null &&\n                    (obj['features']['hide'] || obj['features']['hide_column'])\n                ) {\n                    continue;\n                }\n                if (obj['type'] === 'hdfile' && notification.get(field)[0]['name']) {\n                    ref = notification.get(field);\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        file = ref[i];\n                        tmp_file = {};\n                        tmp_file['name'] = file['name'];\n                        //tmp_file['url'] = notification.get(field)[0]['url']\n                        tmp_file['s3url'] = file['s3url'];\n                        tmp_file['type'] = file['type'];\n                        pics.push(tmp_file);\n                    }\n                } else {\n                    value = c.format(notification.get(field), obj, null, null, true);\n                    emailContent.push(\n                        self2.get('intl').t('report.trnotice.' + field) + ': ' + value,\n                    );\n                }\n            }\n            if (pics.length > 0) {\n                linebreak = '\\r\\n';\n            }\n            userString = '';\n            if (self2.get('session.currentUser.firstname')) {\n                userString += self2.get('session.currentUser.firstname') + ' ';\n            }\n            if (self2.get('session.currentUser.lastname')) {\n                userString += self2.get('session.currentUser.lastname') + '\\n';\n            }\n            if (self2.get('session.currentUser.email')) {\n                userString += self2.get('session.currentUser.email') + '\\n';\n            }\n            if (self2.get('session.currentUser.phone')) {\n                userString += self2.get('session.currentUser.phone') + '\\n';\n            }\n            if (userString !== '') {\n                userString = '\\r\\n' + userString;\n                emailContent.push(userString);\n            }\n            email = emailContent.join(linebreak);\n            return self2.Collector.ttapi({\n                url: 'sendEmailWithImages',\n                data: {\n                    email: notification.get('email'),\n                    title:\n                        self2.get('session.currentUser.company') +\n                        ' - ' +\n                        self2.get('intl').t('site_safety.notice.email_content.title'),\n                    content: email,\n                    attachments: JSON.stringify(pics),\n                    rowid: notification.get('id'),\n                    add_link: true,\n                },\n                method: 'post',\n            });\n        });\n        self2.set('emailModalSent', true);\n        return self2.set('showEmailModal', true);\n    },\n    actions: {\n        removeEmailModal: function () {\n            this.set('emailModalText', null);\n            this.set('showEmailModal', false);\n            this.set('emailModalSent', false);\n            this.set('emailValid', Em.A([]));\n            this.set('emailNotValid', Em.A([]));\n            return this.set('sentToEmails', Em.A([]));\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        sendEmailAction: function (selected) {\n            return this.emailAction(this, this, selected);\n        },\n    },\n});\n\nexport default SiteSafetyMvrNoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrNoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from 'tt4/routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyMvrNoticesRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n    form: 'trnotice',\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.type = 'mvr';\n            if (params.date) {\n                params.created = params.date;\n                delete params.date;\n            }\n            params.sideload = true;\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll(this.get('form'), params);\n            } else {\n                return this.store.query('trnotice', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.mvr.notices').set('qParams', params);\n        }\n    },\n    actions: {\n        didTransition: function () {\n            return this.set('controller.statusSelector', true);\n        },\n    },\n});\n\nexport default SiteSafetyMvrNoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Rx2JcgGi\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"user\\\",\\\"user\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"trnotice\\\",[22,\\\"qParams\\\"],\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"created\\\",\\\"type\\\"],[[23,0,[\\\"date\\\"]],\\\"mvr\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"sendEmailAction\\\",[23,5,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.action.send_notice_email\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/notices/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"trnotice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"status\\\",\\\"settings\\\",\\\"count\\\",\\\"extraData\\\"],[\\\"bubbleTransition\\\",\\\"trnotice\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"extraData\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showEmailModal\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showEmailModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[8],[1,[23,0,[\\\"emailModalTitle\\\"]],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"emailModalText\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailModalSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.action.sendemail.these_were_not_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"emailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-warning\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,3,[]],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ban-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.action.sendemail.these_were_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sentToEmails\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-success\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,2,[]],false],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/mvr/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/observation/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nSiteSafetyObservationController = GeneralReportController.extend({\n    form: 'site_safety_observation',\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    queryParams: ['status', 'page', 'employer', 'creator', 'groupBy', 'project'],\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'creator',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    //        Em.Object.create({field: \"user-group\"})\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            //            hideEdit: true\n            //            hideHistory: true\n            editRoute: 'site_safety.observation.edit',\n        }),\n        massedit: true,\n        showGpsButton: true,\n        rowActions: [],\n    }),\n    search: false,\n    status: 'all',\n    limit: 25,\n    groupBy: null,\n    project: null,\n    user: null,\n    q: null,\n    showColumns: ['created', 'creator', 'status', 'desc', 'project', 'pic'],\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyObservationController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/observation/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyObservationRoute = GeneralReportRoute.extend({\n    form: 'site_safety_observation',\n    capi: service(),\n    flags: service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        creator: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('site_safety_observation', params);\n            } else {\n                return this.store.query('site_safety_observation', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.observation').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyObservationRoute;\n","export default Ember.HTMLBars.template({\"id\":\"nRiXoX6O\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@filterChangeAction\\\"],[\\\"site_safety_observation\\\",[22,\\\"qParams\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/site_safety/observation/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"status\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"site_safety_observation\\\",[24,[\\\"status\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\",\\\"count\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",\\\"site_safety_observation\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/observation/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyReportController;\n\nimport Ember from 'ember';\n\nSiteSafetyReportController = Ember.Controller.extend({\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    project: null,\n    group: null,\n});\n\nexport default SiteSafetyReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/data/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrDataController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from 'tt4/controllers/general-report';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyTrDataController = GeneralReportController.extend(formattedMixin, {\n    intl: Em.inject.service(),\n    flags: Em.inject.service(),\n    queryParams: ['project', 'date', 'page', 'groupBy'],\n    Collector: Ember.inject.service('collector-service'),\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    project: null,\n    form: 'tr',\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    init: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    formatter: function (column, value) {\n        if (column === 'tr_rating') {\n            if (value > 95) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-approved\">' + value + ' %</span>',\n                );\n            } else if (value > 90) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-warning\">' + value + ' %</span>',\n                );\n            } else {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-open\">' + value + ' %</span>',\n                );\n            }\n        }\n        return false;\n    },\n    showColumns: [\n        'status',\n        'project',\n        'user',\n        'date',\n        'tr_rating',\n        'working_plus',\n        'dust_plus',\n        'electricity_plus',\n        'fall_plus',\n        'garbage_plus',\n        'scaffolding_plus',\n        'tools_plus',\n        'foreman_sign',\n        'worker_sign',\n    ],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                dynamic: true,\n                route: 'site_safety.measurement.add.measurement',\n                fields: ['id', 'constructor.modelName', 'project.id'],\n            },\n            historyRoute: 'site_safety.tr.history',\n            //hideEdit: true\n            hideHistory: true,\n            disableStatus: 'approved',\n        }),\n        sortByColumn: 'date-',\n    }),\n    addRowActions: function () {\n        var fields, intl;\n        intl = this.get('intl');\n        if (this.Collector == null) {\n            return;\n        }\n        fields = this.Collector.fields('tr');\n        return this.set('settings.rowActions', [\n            {\n                text: 'site_safety.formatted_pdf_export',\n                action: (self, items) => {\n                    return this.createMeasurementPdf(fields, items);\n                },\n            },\n        ]);\n    },\n    actions: {\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute(\n                'site_safety.measurement.add.measurement',\n                row.id,\n                'tr',\n                row.project.id,\n            );\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        createSpecialPdf: function (selected) {\n            var fields;\n            fields = this.Collector.fields('tr');\n            return this.createMeasurementPdf(fields, selected);\n        },\n    },\n});\n\nexport default SiteSafetyTrDataController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/data/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrDataRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from 'tt4/routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyTrDataRoute = GeneralReportRoute.extend({\n    form: 'tr',\n    Collector: Ember.inject.service('collector-service'),\n    capi: service(),\n    flags: service(),\n    beforeModel: function (transition) {\n        var c;\n        this._super(transition);\n        c = this.get('Collector');\n        if (transition.targetName !== 'site_safety.tr.notices' && !c.testNeedsOne('tr@add')) {\n            transition.abort();\n            return this.transitionTo('site_safety.tr.notices');\n        }\n    },\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.sideload = true;\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('tr', params);\n            } else {\n                //        params.order = \"date-\"\n                return this.store.query('tr', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.tr.data').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyTrDataRoute;\n","export default Ember.HTMLBars.template({\"id\":\"C9gOj8Ls\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"tr\\\",[22,\\\"qParams\\\"],\\\"date,user,project,group,q\\\",\\\"user.employer,user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[23,0,[\\\"date\\\"]],\\\"date-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.formatted_pdf_export\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/site_safety/report/tr/data?modal=tr%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\",\\\"@hideEditStatus\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null],\\\"remove,overview,edit\\\",\\\"approved\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"formatter\\\",\\\"settings\\\",\\\"summableFieldTypes\\\",\\\"showPdfExport\\\",\\\"ownExports\\\",\\\"ownExportAction\\\",\\\"status\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"settings\\\"]],false,false,[24,[\\\"ownExports\\\"]],\\\"ownExportAction\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/tr/data/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/graphs/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrGraphsController;\n\nimport Ember from 'ember';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nSiteSafetyTrGraphsController = Ember.Controller.extend(formattedMixin, {\n    trController: Ember.inject.controller('site_safety/report/tr'),\n    queryParams: ['project', 'date'],\n    project: Ember.computed.alias('trController.project'),\n    date: Ember.computed.alias('trController.date'),\n    group: Ember.computed.alias('trController.group'),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                form: 'tr',\n                type: 'database',\n                value: this.get('project'),\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'date',\n                form: 'tr',\n                type: 'date',\n                value: this.get('date'),\n            }),\n            Em.Object.create({\n                field: 'group',\n                form: 'tr',\n                type: 'database',\n                value: this.get('group'),\n                singleselect: true,\n            }),\n        ]);\n    }),\n    pie_options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 350,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n    },\n    //        slices: {\n    //            1: {offset: 0.02}\n    //            2: {offset: 0.02}\n    //            3: {offset: 0.02}\n    //        }\n    dataSetter: function () {\n        var amount,\n            average_rating,\n            data,\n            data_rating,\n            data_rating_pie,\n            field_rating,\n            fields,\n            pie_over90under95,\n            pie_over95,\n            pie_under90,\n            self,\n            total,\n            totrating,\n            trs;\n        self = this;\n        data = Em.A([\n            [\n                '',\n                this.get('intl').t('tr.title.working'),\n                this.get('intl').t('tr.title.scaffolding'),\n                this.get('intl').t('tr.title.tools'),\n                this.get('intl').t('tr.title.fall'),\n                this.get('intl').t('tr.title.electricity'),\n                this.get('intl').t('tr.title.garbage'),\n                this.get('intl').t('tr.title.dust'),\n            ],\n        ]);\n        data_rating = Em.A([[this.get('intl').t('date'), this.get('intl').t('tr.rating')]]);\n        data_rating_pie = Em.A([\n            [this.get('intl').t('tr.rating'), this.get('intl').t('tr.rating')],\n        ]);\n        pie_under90 = 0;\n        pie_over90under95 = 0;\n        pie_over95 = 0;\n        average_rating = 0;\n        amount = 0;\n        total = 0;\n        trs = this.get('model.tr');\n        if (!trs) {\n            return;\n        }\n        field_rating = [0, 0, 0, 0, 0, 0, 0];\n        fields = ['working', 'scaffolding', 'tools', 'fall', 'electricity', 'garbage', 'dust'];\n        trs.forEach(function (tr, idx) {\n            var field, i, index, len, minus, plus, row, tr_minus, tr_plus;\n            row = [moment(tr.get('date')).format('L')];\n            tr_plus = tr.getProperties(\n                'working_plus',\n                'scaffolding_plus',\n                'tools_plus',\n                'fall_plus',\n                'electricity_plus',\n                'garbage_plus',\n                'dust_plus',\n            );\n            tr_minus = tr.getProperties(\n                'working_minus',\n                'scaffolding_minus',\n                'tools_minus',\n                'fall_minus',\n                'electricity_minus',\n                'garbage_minus',\n                'dust_minus',\n            );\n            for (index = i = 0, len = fields.length; i < len; index = ++i) {\n                field = fields[index];\n                plus = 0;\n                minus = 0;\n                if (tr_plus[field + '_plus']) {\n                    plus = parseInt(tr_plus[field + '_plus'], 10);\n                }\n                if (tr_minus[field + '_minus']) {\n                    minus = parseInt(tr_minus[field + '_minus'], 10);\n                }\n                if (!isNaN((plus / (plus + minus)) * 100)) {\n                    field_rating[index] += parseFloat((plus / (plus + minus)) * 100);\n                }\n                row.push(parseFloat(((plus / (plus + minus)) * 100).toFixed(2)));\n            }\n            if (!isNaN(tr.get('tr_rating')) && tr.get('tr_rating') !== null) {\n                data_rating.push([\n                    moment(tr.get('date')).format('L'),\n                    parseFloat(tr.get('tr_rating')),\n                ]);\n                total += parseFloat(tr.get('tr_rating'));\n                amount++;\n                if (tr.get('tr_rating') < 90) {\n                    pie_under90++;\n                }\n                if (tr.get('tr_rating') >= 90 && tr.get('tr_rating') < 95) {\n                    pie_over90under95++;\n                }\n                if (tr.get('tr_rating') >= 95) {\n                    return pie_over95++;\n                }\n            } else {\n                return data_rating.push([moment(tr.get('date')).format('L'), 0]);\n            }\n        });\n        totrating = [''];\n        field_rating.forEach((rating) => {\n            return totrating.push(Math.round(rating / trs.get('length'), 2));\n        });\n        data.push(totrating);\n        average_rating = Math.round(total / amount) + '%';\n        data_rating_pie.push([this.get('intl').t('tr_rating_pie_under90'), pie_under90]);\n        data_rating_pie.push([\n            this.get('intl').t('tr_rating_pie_over90under95'),\n            pie_over90under95,\n        ]);\n        data_rating_pie.push([this.get('intl').t('tr_rating_pie_over95'), pie_over95]);\n        self.set('data', data);\n        self.set('data_rating', data_rating);\n        self.set('data_rating_pie', data_rating_pie);\n        return self.set('average_rating', average_rating);\n    }.observes('model.tr.[]', 'intl.primaryLocale', 'selectedIndex'),\n    actions: {\n        handleSelection: function (sel) {\n            if (sel.length > 0 && sel[0].row !== null) {\n                if (this.get('selectedIndex') === sel[0].row) {\n                    return this.set('selectedIndex', null);\n                } else {\n                    return this.set('selectedIndex', sel[0].row);\n                }\n            }\n        },\n        exportNewestPdf: function (project) {\n            var charts, fields, newest;\n            // get newest tr record\n            newest = this.store\n                .peekAll('tr')\n                .filter((record) => {\n                    return record.get('project.id') === project;\n                })\n                .sortBy('date')\n                .reverse()\n                .get('firstObject');\n            if (!newest) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('tr.chart.export_newest_pdf_not_found'),\n                );\n            }\n            // export as measurement pdf\n            fields = this.get('Collector').fields('tr');\n            charts = [\n                {\n                    url: this.get('piechart').getImageURI(),\n                    width: 300,\n                    title: this.get('intl').t('tr.chart.tr_rating_pie'),\n                },\n                {\n                    url: this.get('datachart').getImageURI(),\n                    title: this.get('intl').t('tr.chart.measurement_ratings'),\n                },\n                {\n                    url: this.get('dataratingchart').getImageURI(),\n                    title: this.get('intl').t('tr.chart.tr_rating'),\n                },\n            ];\n            return this.createMeasurementPdf(fields, [newest], 'download', charts);\n        },\n        filterChanged: function (value, field) {\n            if (value == null) {\n                return this.set(field, '');\n            } else if (field === 'date') {\n                return this.set(field, value);\n            } else {\n                return this.set(field, value.id);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyTrGraphsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/graphs/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrGraphsRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyTrGraphsRoute = Ember.Route.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function (transition) {\n        var c;\n        this._super(transition);\n        c = this.get('Collector');\n        if (transition.targetName !== 'site_safety.tr.notices' && !c.testNeedsOne('tr@add')) {\n            transition.abort();\n            return this.transitionTo('site_safety.report.tr.notices');\n        }\n    },\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var cols, date, monthAgo, store, trfieldkeys, trfields;\n        params.sideload = true;\n        if (params.project === 'undefined') {\n            delete params.project;\n        }\n        if (!params.group) {\n            delete params.group;\n        }\n        params.order = 'date';\n        store = this.get('store');\n        monthAgo = moment().subtract(1, 'month').format('YYYY-MM-DD_');\n        date = moment().format('YYYY-MM-DD');\n        trfields = this.get('Collector').fields('tr');\n        trfieldkeys = Object.keys(trfields);\n        cols = [];\n        trfieldkeys.forEach(function (field) {\n            if (trfields[field].type !== 'multiselect') {\n                return cols.push(field);\n            }\n        });\n        params.cols = cols.join(',');\n        return Ember.RSVP.hash({\n            tr: store.query('tr', params),\n            noticesSelected: store.query('trnotice', {\n                type: 'tr',\n                limit: 100,\n                created: monthAgo.concat(date),\n                sideload: params.sideload,\n                project: params.project,\n                group: params.group,\n            }),\n            notices: store.query('trnotice', {\n                type: 'tr',\n                limit: 1,\n                created: params.date,\n                project: params.project,\n                group: params.group,\n            }),\n            not_solved: store.query('trnotice', {\n                type: 'tr',\n                limit: 1,\n                created: params.date,\n                status: 'open',\n                project: params.project,\n                group: params.group,\n            }),\n            overdue: store.query('trnotice', {\n                type: 'tr',\n                created: params.date,\n                date: params.date,\n                status: 'open',\n                limit: 1,\n                project: params.project,\n                group: params.group,\n            }),\n        });\n    },\n});\n\nexport default SiteSafetyTrGraphsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xm+HHklx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"hideClearFilters\\\"],[[24,[\\\"filters\\\"]],\\\"tr\\\",\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row col-xs-12 export-pdf-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"exportNewestPdf\\\",[24,[\\\"project\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[10,\\\"disabled\\\",\\\"\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"tr.chart.select_project\\\"],null]]]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row site-safety-measurement-row-container\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-container col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.tr.notices\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"notices-graph\\\",null,[[\\\"all\\\",\\\"overdue\\\",\\\"not_solved\\\"],[[24,[\\\"model\\\",\\\"notices\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"overdue\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"not_solved\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.tr.data\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"tr\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notices-graph-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"notices-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.tr_rating_pie\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"average_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            , \\\"],[1,[28,\\\"t\\\",[\\\"tr.chart.average\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"average_rating\\\"],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\",\\\"chart\\\"],[[24,[\\\"data_rating_pie\\\"]],\\\"pie\\\",\\\"#D9534F,#FFC56C,#5CB85C\\\",[24,[\\\"pie_options\\\"]],[24,[\\\"piechart\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"tr\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.measurement_ratings\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"type\\\",\\\"data\\\",\\\"export\\\",\\\"chart\\\",\\\"Ymax\\\",\\\"Ymin\\\"],[\\\"column\\\",[24,[\\\"data\\\"]],true,[24,[\\\"datachart\\\"]],100,0]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.tr_rating\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"selectionHandler\\\",\\\"export\\\",\\\"Xmax\\\",\\\"Xmin\\\",\\\"chart\\\"],[[24,[\\\"data_rating\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"handleSelection\\\"],null],true,100,0,[24,[\\\"dataratingchart\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/tr/graphs/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrNoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from 'tt4/controllers/general-report';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyTrNoticesController = GeneralReportController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    intl: Em.inject.service(),\n    queryParams: ['project', 'status', 'page', 'employer', 'user', 'date', 'groupBy'],\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    arrangedContent: Ember.computed('model.[]', function () {\n        return this.get('content').sortBy('date');\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({}),\n        //            hideEdit: true\n        //            hideHistory: true\n        massedit: true,\n        rowActions: [],\n    }),\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    search: false,\n    status: 'all',\n    form: 'trnotice',\n    showColumns: ['date', 'status', 'desc', 'user', 'project', 'pic'],\n    extraData: {\n        type: 'tr',\n    },\n    emailValid: Em.A([]),\n    emailNotValid: Em.A([]),\n    sentToEmails: Em.A([]),\n    init_functions: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    addRowActions: function () {\n        var self2;\n        self2 = this;\n        if (this.Collector == null) {\n            return;\n        }\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('site_safety.action.send_notice_email'),\n            action: function (self, notifications) {\n                return self2.emailAction(self, self2, notifications);\n            },\n        });\n    },\n    emailAction: function (self, self2, notifications) {\n        var c, emailNotValid, emailsArr, fields, intl;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        fields = c.fields('trnotice');\n        emailNotValid = self2.get('emailNotValid');\n        notifications.forEach(function (notification) {\n            var user, username;\n            if (!notification.get('email')) {\n                user = notification.get('user');\n                username = user.get('lastname') + ' ' + user.get('firstname');\n                if (emailNotValid.indexOf(username) < 0) {\n                    return emailNotValid.push(username);\n                }\n            } else {\n                //if emailNotValid.indexOf(notification.get('email')) < 0\n                //    emailNotValid.push(notification.get('user'))\n                return self2.get('emailValid').push(notification);\n            }\n        });\n        self2.set('emailModalTitle', intl.t('site_safety.action.email.modal_title'));\n        //if nothing selected\n        if (self2.get('emailNotValid.length') === 0 && self2.get('emailValid.length') === 0) {\n            self2.set('emailModalText', intl.t('site_safety.action.email.nothing_found'));\n            self2.set('showEmailModal', true);\n            return;\n        }\n        //if only not valid emails\n        if (self2.get('emailValid.length') === 0) {\n            self2.set('emailModalSent', true);\n            self2.set('showEmailModal', true);\n            return;\n        }\n        //send credentials to valid email\n        emailsArr = self2.get('sentToEmails');\n        self2.get('emailValid').forEach(function (notification) {\n            var email,\n                emailContent,\n                field,\n                file,\n                i,\n                len,\n                linebreak,\n                obj,\n                pics,\n                ref,\n                tmp_file,\n                user,\n                userString,\n                username,\n                value;\n            user = notification.get('user');\n            username =\n                user.get('lastname') +\n                ' ' +\n                user.get('firstname') +\n                ' (' +\n                notification.get('email') +\n                ')';\n            if (emailsArr.indexOf(username) < 0) {\n                emailsArr.push(username);\n            }\n            emailContent = [];\n            emailContent.push(self2.get('intl').t('site_safety.notice.email_content.content'));\n            pics = [];\n            linebreak = '<br>';\n            for (field in fields) {\n                obj = fields[field];\n                if (\n                    obj['features'] != null &&\n                    (obj['features']['hide'] || obj['features']['hide_column'])\n                ) {\n                    continue;\n                }\n                if (obj['type'] === 'hdfile' && notification.get(field)[0]['name']) {\n                    ref = notification.get(field);\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        file = ref[i];\n                        tmp_file = {};\n                        tmp_file['name'] = file['name'];\n                        //tmp_file['url'] = notification.get(field)[0]['url']\n                        tmp_file['s3url'] = file['s3url'];\n                        tmp_file['type'] = file['type'];\n                        pics.push(tmp_file);\n                    }\n                } else {\n                    value = c.format(notification.get(field), obj, null, null, true);\n                    emailContent.push(\n                        self2.get('intl').t('report.trnotice.' + field) + ': ' + value,\n                    );\n                }\n            }\n            if (pics.length > 0) {\n                linebreak = '\\r\\n';\n            }\n            userString = '';\n            if (self2.get('session.currentUser.firstname')) {\n                userString += self2.get('session.currentUser.firstname') + ' ';\n            }\n            if (self2.get('session.currentUser.lastname')) {\n                userString += self2.get('session.currentUser.lastname') + '\\n';\n            }\n            if (self2.get('session.currentUser.email')) {\n                userString += self2.get('session.currentUser.email') + '\\n';\n            }\n            if (self2.get('session.currentUser.phone')) {\n                userString += self2.get('session.currentUser.phone') + '\\n';\n            }\n            if (userString !== '') {\n                userString = '\\r\\n' + userString;\n                emailContent.push(userString);\n            }\n            email = emailContent.join(linebreak);\n            return self2.Collector.ttapi({\n                url: 'sendEmailWithImages',\n                data: {\n                    email: notification.get('email'),\n                    title:\n                        self2.get('session.currentUser.company') +\n                        ' - ' +\n                        self2.get('intl').t('site_safety.notice.email_content.title'),\n                    content: email,\n                    attachments: JSON.stringify(pics),\n                    rowid: notification.get('id'),\n                    add_link: true,\n                },\n                method: 'post',\n            });\n        });\n        self2.set('emailModalSent', true);\n        return self2.set('showEmailModal', true);\n    },\n    actions: {\n        removeEmailModal: function () {\n            this.set('emailModalText', null);\n            this.set('showEmailModal', false);\n            this.set('emailModalSent', false);\n            this.set('emailValid', Em.A([]));\n            this.set('emailNotValid', Em.A([]));\n            return this.set('sentToEmails', Em.A([]));\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        sendEmailAction: function (selected) {\n            return this.emailAction(this, this, selected);\n        },\n    },\n});\n\nexport default SiteSafetyTrNoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrNoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from 'tt4/routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyTrNoticesRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n    form: 'trnotice',\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    actions: {\n        didTransition: function () {\n            return this.set('controller.statusSelector', true);\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.type = 'tr';\n            if (params.date) {\n                params.created = params.date;\n                delete params.date;\n            }\n            params.sideload = true;\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll(this.get('form'), params);\n            } else {\n                return this.store.query('trnotice', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.tr.notices').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyTrNoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xOJG3hOW\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"user\\\",\\\"user\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"trnotice\\\",[22,\\\"qParams\\\"],\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"created\\\",\\\"type\\\"],[[23,0,[\\\"date\\\"]],\\\"tr\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\\n                    \\\"],[6,[23,7,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"sendEmailAction\\\",[23,5,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.action.send_notice_email\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/notices/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"trnotice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"status\\\",\\\"settings\\\",\\\"count\\\",\\\"extraData\\\"],[\\\"bubbleTransition\\\",\\\"trnotice\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"extraData\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showEmailModal\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showEmailModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[8],[1,[23,0,[\\\"emailModalTitle\\\"]],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"emailModalText\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailModalSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.action.sendemail.these_were_not_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"emailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-warning\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,3,[]],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ban-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.action.sendemail.these_were_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sentToEmails\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-success\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,2,[]],false],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/tr/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSiteSafetyRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default SiteSafetyRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetySavedController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport pdf_measurement_mixin from '../../../mixins/sitesafety-export';\n\nimport formatted_pdf_measurement_mixin from '../../../mixins/sitesafety-formatted-export';\n\nSiteSafetySavedController = Ember.Controller.extend(\n    pdf_measurement_mixin,\n    formatted_pdf_measurement_mixin,\n    {\n        Collector: Ember.inject.service('collector-service'),\n        intl: Ember.inject.service(),\n        queryParams: ['email'],\n        email: false,\n        form: Ember.computed('model', function () {\n            return this.get('model.constructor.modelName');\n        }),\n        fields: Ember.computed('model', function () {\n            var fields;\n            fields = this.get('Collector').fieldArray(this.get('model.constructor.modelName'));\n            return fields.reject(function (item) {\n                item.ext = item.name;\n                if (item.name.slice(-6) === '_minus') {\n                    return true;\n                }\n            });\n        }),\n        afterSave: Ember.computed('model', function () {\n            if (['tr', 'mvr'].includes(this.get('model.constructor.modelName'))) {\n                return 'site_safety.report.' + this.get('model.constructor.modelName') + '.graphs';\n            }\n            return [\n                'site_safety.measurement.graphs',\n                this.get('model.constructor.modelName').substring(12).toLowerCase(),\n            ];\n        }),\n        showApprovalLinkSelection: Ember.computed(function () {\n            var field, fields, found;\n            fields = this.get('fields');\n            found = false;\n            for (field in fields) {\n                if (\n                    fields[field].type === 'status' &&\n                    !fields[field].features.readonly &&\n                    indexOf.call(fields[field].options, 'approved') >= 0\n                ) {\n                    found = true;\n                }\n            }\n            return found;\n        }),\n        actions: {\n            //        setEmail: (value) ->\n            //            @get('store').findRecord('user', value.get('id'), {reload: true}).then (user) =>\n            //                user.validate(['email']).then =>\n            //                    error = user.get('errors').errorsFor('email')\n            //                    email = user.get('email')\n            //                    if error.length > 0\n            //                        @set 'email_error', error\n            //                    else if email\n            //                        @set 'email', email\n            send_email: function (recipient, title, content, params) {\n                var fields;\n                fields = this.get('Collector').fields(this.get('model.constructor.modelName'));\n                this.set('loading', true);\n                return this.createMeasurementPdf(fields, [this.get('model')], 'base64').then(\n                    (pdf) => {\n                        var c, intl;\n                        c = this.get('Collector');\n                        intl = this.get('intl');\n                        return c\n                            .ttapi({\n                                method: 'post',\n                                url: 'sendReportAsEmail',\n                                data: {\n                                    to_address: recipient,\n                                    email: pdf,\n                                    header: title,\n                                    content: content,\n                                    lang: intl.primaryLocale,\n                                    includeApproval: params.approvalLink,\n                                    form: this.get('form'),\n                                    form_name: 'tr',\n                                    rowids: [this.get('model.id')],\n                                },\n                            })\n                            .then((ret) => {\n                                this.set('emailSent', true);\n                                return this.set('loading', false);\n                            })\n                            .catch((e) => {\n                                this.set('email', false);\n                                this.set('loading', false);\n                                throw new Ember.Error(e);\n                            });\n                    },\n                );\n            },\n            removeModal: function () {\n                return this.set('email', false);\n            },\n        },\n    },\n);\n\nexport default SiteSafetySavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetySavedRoute;\n\nimport Ember from 'ember';\n\nimport toTop from '../../../mixins/reset-scroll';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSiteSafetySavedRoute = Ember.Route.extend(toTop, AuthenticatedRouteMixin, {\n    store: Ember.inject.service(),\n    model: function (params) {\n        return this.get('store').findRecord(params.type, params.id, {\n            include: true,\n        });\n    },\n});\n\n//    actions:\n//        willTransition: ->\n//            @get('store').unloadAll('tr')\nexport default SiteSafetySavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"86ZtV5tT\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n                    : \\\"],[9],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,1,[]],[23,1,[\\\"form\\\"]],[24,[\\\"model\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"afterSave\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"tagName\\\",\\\"classNames\\\"],[[24,[\\\"afterSave\\\"]],\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\",[24,[\\\"afterSave\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"query\\\"],[\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\",[28,\\\"hash\\\",null,[[\\\"email\\\"],[true]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"site_safety.saved.send_email\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"email\\\"]],true],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"export-modal\\\",null,[[\\\"sendEmailAction\\\",\\\"showEmailModal\\\",\\\"initType\\\",\\\"form\\\",\\\"showApprovalLinkSelection\\\",\\\"includeApprovalLink\\\",\\\"emailSent\\\",\\\"loading\\\",\\\"currentTemplate\\\",\\\"action\\\",\\\"count\\\"],[\\\"send_email\\\",[24,[\\\"email\\\"]],\\\"email\\\",[24,[\\\"form\\\"]],[24,[\\\"showApprovalLinkSelection\\\"]],[24,[\\\"includeApprovalLink\\\"]],[24,[\\\"emailSent\\\"]],[24,[\\\"loading\\\"]],[24,[\\\"currentTemplate\\\"]],[24,[\\\"action\\\"]],1]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/saved/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"MNBM1Qx+\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsAddController;\n\nimport Ember from 'ember';\n\nProjectsAddController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    intl: Em.inject.service(),\n    projectField: Em.computed('model', function () {\n        return this.get('Collector').field('skyddsrond', 'project');\n    }),\n    setDefaultValue: function (field) {\n        if (field.name === 'project') {\n            field.features.hide = true;\n        }\n        return field;\n    },\n    sendNoticeEmail: function (notification) {\n        var c,\n            email,\n            emailContent,\n            field,\n            fields,\n            file,\n            i,\n            len,\n            linebreak,\n            obj,\n            pics,\n            projectString,\n            ref,\n            tmp_file,\n            userString,\n            value;\n        c = this.get('Collector');\n        fields = c.fields('notice');\n        pics = [];\n        emailContent = [];\n        emailContent.push(this.get('intl').t('site_safety.notice.email_content.content'));\n        for (field in fields) {\n            obj = fields[field];\n            if (field === 'status') {\n                continue;\n            }\n            if (obj['type'] === 'hdfile') {\n                ref = notification.get(field);\n                for (i = 0, len = ref.length; i < len; i++) {\n                    file = ref[i];\n                    console.log(file);\n                    tmp_file = {};\n                    tmp_file['name'] = file.name;\n                    tmp_file['url'] = file.url;\n                    tmp_file['s3url'] = file.s3url;\n                    tmp_file['type'] = file.type;\n                    pics.push(tmp_file);\n                }\n            } else {\n                value = c._format_(notification.get(field), 'notice', field);\n                emailContent.push(this.get('intl').t('report.notice.' + field) + ': ' + value);\n            }\n        }\n        userString = '';\n        if (this.get('session.currentUser.firstname')) {\n            userString += this.get('session.currentUser.firstname') + ' ';\n        }\n        if (this.get('session.currentUser.lastname')) {\n            userString += this.get('session.currentUser.lastname') + '\\n';\n        }\n        if (this.get('session.currentUser.email')) {\n            userString += this.get('session.currentUser.email') + '\\n';\n        }\n        if (this.get('session.currentUser.phone')) {\n            userString += this.get('session.currentUser.phone') + '\\n';\n        }\n        projectString = '';\n        if (notification.get('project.number')) {\n            projectString += notification.get('project.number') + ' ';\n        }\n        projectString += notification.get('project.name');\n        linebreak = '\\n';\n        email = emailContent.join(linebreak);\n        // get email for assigned user\n        return this.get('store')\n            .findRecord('user', notification.get('user.id'), {\n                reload: true,\n            })\n            .then((userRecord) => {\n                var emailAddress;\n                emailAddress = userRecord.get('email');\n                return this.get('Collector').ttapi({\n                    dataType: 'text',\n                    url: 'sendEmailWithImages',\n                    data: {\n                        form: 'notice',\n                        email: emailAddress,\n                        title:\n                            this.get('session.currentUser.company') +\n                            ' - ' +\n                            this.get('intl').t('site_safety.notice.email_content.title'),\n                        content: email,\n                        link_text: this.get('intl').t('site_safety.notice.fix_link')['string'],\n                        attachments: JSON.stringify(pics),\n                        rowid: notification.get('id'),\n                        add_link: true,\n                        userid: userRecord.get('id'),\n                    },\n                    method: 'post',\n                });\n            });\n    },\n    actions: {\n        setValue: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        addNotice: function (value, field) {\n            var c, object;\n            c = this.get('Collector');\n            object = c.field('skyddsrond', field);\n            if (object.type === 'radio' && value === '$med_anm') {\n                this.set('openNotice', field);\n                return this.set(\n                    'noticeRecord',\n                    this.get('store').createRecord('notice', {\n                        project: this.get('model.project'),\n                        creator: this.get('session.currentUser'),\n                        fixbydate: moment().add(7, 'days').format('YYYY-MM-DD'),\n                    }),\n                );\n            } else if (object.type === 'radio') {\n                return this.send('closeNotice');\n            }\n        },\n        addToNoticeArray: function (settings, record) {\n            var field;\n            field = this.get('model.' + this.get('openNotice') + '_notices');\n            if (Ember.isArray(field)) {\n                field.pushObject(record);\n            } else {\n                this.set('model.' + this.get('openNotice') + '_notices', Em.A([record]));\n            }\n            this.sendNoticeEmail(record);\n            return this.send('closeNotice', false);\n        },\n        closeNotice: function (destroy = true) {\n            this.set('openNotice', false);\n            if (destroy && this.get('noticeRecord')) {\n                this.get('noticeRecord').destroyRecord();\n            }\n            return this.set('noticeRecord', false);\n        },\n        cancel: function () {\n            return this.transitionToRoute('skyddsrond.report');\n        },\n        saved: function (settings, record) {\n            return this.send('transitionToSaved', record);\n        },\n        openInfo: function (field) {\n            return this.get('dialogs').alert(this.get('intl').t('skyddsrond.info.' + field));\n        },\n    },\n});\n\nexport default ProjectsAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondAddRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport toTop from '../../../mixins/reset-scroll';\n\nSkyddsrondAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, toTop, {\n    Collector: Ember.inject.service('collector-service'),\n    model: function () {\n        var default_values, fields;\n        fields = this.get('Collector').fieldArray('skyddsrond');\n        default_values = {};\n        fields.forEach(function (item) {\n            if (item.type === 'radio') {\n                return (default_values[item.name] = '$ej_akt');\n            }\n        });\n        return this.get('store').createRecord('skyddsrond', default_values);\n    },\n    actions: {\n        transitionToSaved: function (record) {\n            return this.transitionTo('skyddsronds.saved', record);\n        },\n    },\n});\n\nexport default SkyddsrondAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"mNU4f1D0\",\"block\":\"{\\\"symbols\\\":[\\\"component\\\",\\\"field\\\",\\\"record\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.skyddsrond\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"tagName\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"span\\\",\\\"skyddsronds.report\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"skyddsrond-container\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"model\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],null],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"mini text-muted\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"collector/record-custom-comp\\\",null,[[\\\"record\\\",\\\"form\\\",\\\"returnField\\\",\\\"bubbleChange\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"model\\\"]],\\\"skyddsrond\\\",[24,[\\\"setDefaultValue\\\"]],\\\"addNotice\\\",\\\"saved\\\",\\\"cancel\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"type\\\"]],\\\"radio\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default btn-sm pull-left\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openInfo\\\",[23,2,[\\\"name\\\"]]]],[8],[1,[28,\\\"standard-icon\\\",[\\\"info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[23,3,[]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[23,2,[\\\"form\\\"]],\\\".\\\",[23,2,[\\\"name\\\"]],\\\"_notices\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"skyddsronds/notice-array\\\",null,[[\\\"field\\\",\\\"model\\\",\\\"addNotice\\\",\\\"noticeAdded\\\"],[[23,2,[]],[23,3,[]],[28,\\\"action\\\",[[23,0,[]],\\\"addNotice\\\"],null],\\\"closeNotice\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"openNotice\\\"]],[23,2,[\\\"name\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"glyphicon glyphicon-remove-circle icon-big pull-right\\\"],[12,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"skyddsrond.notice.remove\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"closeNotice\\\"]],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector/record-custom-comp\\\",null,[[\\\"record\\\",\\\"form\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"noticeRecord\\\"]],\\\"notice\\\",\\\"addToNoticeArray\\\",\\\"closeNotice\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"mini text-muted\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2,3]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.select_project_first\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/dashboard/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondDashboardController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nSkyddsrondDashboardController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    queryParams: ['project', 'date'],\n    form: 'skyddsrond',\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({}),\n    }),\n    filters: Em.A([]),\n    date: moment().subtract(1, 'month').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    pie_options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 350,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n    },\n    //        slices: {\n    //            1: {offset: 0.02}\n    //            2: {offset: 0.02}\n    //            3: {offset: 0.02}\n    //        }\n    data: Ember.computed('model.skyddsrond', function () {\n        var arr, by_date, date_obj, intl, key, obj, value;\n        obj = {\n            $utan_anm: 0,\n            $med_anm: 0,\n            $ej_akt: 0,\n        };\n        date_obj = {};\n        //        projects = Em.A([])\n        this.get('model.skyddsrond').forEach(function (item) {\n            var date;\n            //            projects.pushObject item.get('project.id')\n            date = item.get('date');\n            if (date_obj[date] == null) {\n                date_obj[date] = {\n                    $utan_anm: 0,\n                    $med_anm: 0,\n                    $ej_akt: 0,\n                };\n            }\n            return item.eachAttribute(function (name, meta) {\n                var value;\n                value = item.get(name);\n                if (value === '$utan_anm' || value === '$med_anm' || value === '$ej_akt') {\n                    ++date_obj[date][value];\n                    return ++obj[value];\n                }\n            });\n        });\n        intl = this.get('intl');\n        arr = Em.A([\n            ['Rating', 'Value'],\n            [intl.t('skyddsrond.option.utan_anm'), obj['$utan_anm']],\n            [intl.t('skyddsrond.option.med_anm'), obj['$med_anm']],\n            [intl.t('skyddsrond.option.ej_akt'), obj['$ej_akt']],\n        ]);\n        by_date = [\n            [\n                'Date',\n                intl.t('skyddsrond.option.utan_anm'),\n                intl.t('skyddsrond.option.med_anm'),\n                intl.t('skyddsrond.option.ej_akt'),\n            ],\n        ];\n        //        by_date_normalized = [[\"Date\", \"Utan\",\"Med\",\"Ej akt\"]]\n        //        projects_amount = projects.uniq().get('length')\n        for (key in date_obj) {\n            value = date_obj[key];\n            by_date.push([\n                moment(key).format('L'),\n                value['$utan_anm'],\n                value['$med_anm'],\n                value['$ej_akt'],\n            ]);\n        }\n        return {\n            //            by_date_normalized.push [moment(key).format('L'), value[\"$utan_anm\"]/projects_amount, value[\"$med_anm\"]/projects_amount, value[\"$ej_akt\"]/projects_amount]\n            total: arr,\n            by_date: by_date, //, by_date_normalized: by_date_normalized}\n        };\n    }),\n    pie_colors: '#086E3D,#C51017,#B3B3B3',\n    chart_options: {\n        height: 350,\n        width: '100%',\n        colors: ['#086E3D', '#C51017', '#B3B3B3'],\n    },\n});\n\nexport default SkyddsrondDashboardController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/dashboard/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondDashboardRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nSkyddsrondDashboardRoute = GeneralReportRoute.extend({\n    store: Ember.inject.service(),\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var store;\n        params = this._super(params);\n        params.sideload = true;\n        store = this.get('store');\n        return Ember.RSVP.hash({\n            skyddsrond: store.query('skyddsrond', params),\n            notices: store.query('notice', {\n                limit: 1,\n                project: params.project,\n            }),\n            not_solved: store.query('notice', {\n                limit: 1,\n                status: 'open',\n                project: params.project,\n            }),\n            overdue: store.query('notice', {\n                fixbydate: params.date,\n                status: 'open',\n                limit: 1,\n                project: params.project,\n            }),\n        });\n    },\n});\n\nexport default SkyddsrondDashboardRoute;\n","export default Ember.HTMLBars.template({\"id\":\"CQfBWscd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"notices-graph\\\",null,[[\\\"all\\\",\\\"overdue\\\",\\\"not_solved\\\"],[[24,[\\\"model\\\",\\\"notices\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"overdue\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"not_solved\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.dashboard.pie_all\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"skyddsrond\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notices-graph-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"notices-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"data\\\",\\\"total\\\"]],\\\"pie\\\",[24,[\\\"pie_colors\\\"]],[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.dashboard.timeline\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"model\\\",\\\"skyddsrond\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"export\\\",\\\"options\\\"],[[24,[\\\"data\\\",\\\"by_date\\\"]],true,[24,[\\\"chart_options\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.dashboard.no_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/dashboard/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/notice-array/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondsNoticeArrayComponent;\n\nimport Ember from 'ember';\n\nSkyddsrondsNoticeArrayComponent = Ember.Component.extend({\n    notices: Em.computed('model', 'refresh', function () {\n        var field, model;\n        model = this.get('model');\n        field = this.get('field');\n        return model.get(field.name + '_notices');\n    }),\n    columns: Ember.computed('form', function () {\n        var c, form;\n        c = this.get('Collector');\n        form = c.field(this.get('field.form'), this.get('field.name') + '_notices').options.form;\n        return c.fieldArray(form).mapBy('name');\n    }),\n    showNotices: false,\n    actions: {\n        add: function () {\n            if (this.get('addNotice')) {\n                return this.addNotice('$med_anm', this.get('field.name'));\n            }\n        },\n        showNotices: function () {\n            return this.toggleProperty('showNotices');\n        },\n    },\n});\n\nexport default SkyddsrondsNoticeArrayComponent;\n","export default Ember.HTMLBars.template({\"id\":\"n/ZpG2S7\",\"block\":\"{\\\"symbols\\\":[\\\"notice\\\",\\\"column\\\",\\\"column\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notice-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"notices\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"b\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showNotices\\\"]],[8],[1,[28,\\\"t\\\",[\\\"notice_array.show_notices\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[28,\\\"if\\\",[[24,[\\\"showNotices\\\"]],\\\"move-CollapseArrow\\\",\\\"move-ExpandArrow\\\"],null]]]],[8],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Plus pull-right text-success icon-big\\\"],[12,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"notice_array.add_notice\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"add\\\"]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNotices\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notice-table-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"report.notice.\\\",[23,3,[]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"notices\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"notice\\\",[23,2,[]],[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[14,4],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/notice-array/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nSkyddsrondReportController = GeneralReportController.extend({\n    form: 'notice',\n    showColumns: ['fixbydate', 'project', 'title', 'desc', 'status', 'pic', 'user'],\n    queryParams: ['fixbydate', 'status', 'user', 'project'],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n        }),\n        sortByColumn: 'fixbydate',\n    }),\n    filters: Em.A([]),\n    status: 'all',\n});\n\nexport default SkyddsrondReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nSkyddsrondReportRoute = GeneralReportRoute.extend({\n    form: 'notice',\n    queryParams: {\n        fixbydate: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('notice', params);\n    },\n});\n\nexport default SkyddsrondReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"XEEw5X7Z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nSkyddsrondReportController = GeneralReportController.extend({\n    form: 'skyddsrond',\n    showColumns: ['date', 'project', 'user', 'foreman_sign', 'safety_officer_sign'],\n    queryParams: ['date', 'status', 'user', 'project'],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideHistory: true,\n        }),\n        sortByColumn: 'project',\n    }),\n    filters: Em.A([]),\n});\n\nexport default SkyddsrondReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nSkyddsrondReportRoute = GeneralReportRoute.extend({\n    form: 'skyddsrond',\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('skyddsrond', params);\n    },\n});\n\nexport default SkyddsrondReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2Oclos1I\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSkyddsrondsRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default SkyddsrondsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetySavedController;\n\nimport Ember from 'ember';\n\nimport pdf_mixin from '../../../mixins/pdf-export';\n\nSiteSafetySavedController = Ember.Controller.extend(pdf_mixin, {\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    queryParams: ['email'],\n    email: false,\n    fields: Ember.computed('model', function () {\n        var fields;\n        fields = this.get('Collector').fieldArray(this.get('model.constructor.modelName'));\n        return fields.reject(function (item) {\n            item.ext = item.name;\n            return false;\n        });\n    }),\n    afterSave: Ember.computed('model', function () {\n        return 'site_safety.' + this.get('model.constructor.modelName') + '.graphs';\n    }),\n    actions: {\n        //        setEmail: (value) ->\n        //            @get('store').findRecord('user', value.get('id'), {reload: true}).then (user) =>\n        //                user.validate(['email']).then =>\n        //                    error = user.get('errors').errorsFor('email')\n        //                    email = user.get('email')\n        //                    if error.length > 0\n        //                        @set 'email_error', error\n        //                    else if email\n        //                        @set 'email', email\n        send_email: function () {\n            var email, fields;\n            email = this.get('address');\n            if (!email) {\n                return this.set('email_error', this.get('intl').t('validation.errors.mandatory'));\n            } else if (\n                email &&\n                !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n                    email,\n                )\n            ) {\n                return this.set('email_error', this.get('intl').t('validation.errors.email'));\n            } else {\n                this.set('loading', true);\n                fields = this.get('fields').reject(function (item) {\n                    if (item.type === 'databasearray') {\n                        return true;\n                    }\n                });\n                return this.formatCollectorFieldsToPdfArray(fields, this.get('model')).then(\n                    (data) => {\n                        var element;\n                        element = this.createPdfTableElement(['name', 'value'], data, ['', '']);\n                        return this.createPdfFromElements([element], 'base64').then((pdf) => {\n                            var c, intl;\n                            c = this.get('Collector');\n                            intl = this.get('intl');\n                            return c\n                                .ttapi({\n                                    method: 'post',\n                                    url: 'sendReportAsEmail',\n                                    data: {\n                                        to_address: this.get('address'),\n                                        email: pdf,\n                                        header: intl.t('skyddsrond.email.title', {\n                                            date: moment(this.get('model.date')).format('L'),\n                                        }),\n                                        content: this.get('email_content'),\n                                    },\n                                })\n                                .then((ret) => {\n                                    this.set('email', false);\n                                    return this.set('loading', false);\n                                });\n                        });\n                    },\n                );\n            }\n        },\n        removeModal: function () {\n            return this.set('email', false);\n        },\n    },\n});\n\nexport default SiteSafetySavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondSavedRoute;\n\nimport Ember from 'ember';\n\nimport toTop from '../../../mixins/reset-scroll';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSkyddsrondSavedRoute = Ember.Route.extend(toTop, AuthenticatedRouteMixin, {\n    store: Ember.inject.service(),\n    model: function (params) {\n        return this.get('store').findRecord('skyddsrond', params.id, {\n            include: true,\n        });\n    },\n});\n\nexport default SkyddsrondSavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"qfXFWs3H\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n                    : \\\"],[9],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,1,[]],[23,1,[\\\"form\\\"]],[24,[\\\"model\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\",\\\"skyddsronds.dashboard\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"query\\\"],[\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\",[28,\\\"hash\\\",null,[[\\\"email\\\"],[true]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.send_email\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"email\\\"]],true],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup-header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.title\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-modal-cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"email_error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.email_address\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[22,\\\"email_error\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"text\\\",\\\"form-control\\\",[24,[\\\"address\\\"]],[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.address.placeholder\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.text\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"rows\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"form-control\\\",6,[24,[\\\"email_content\\\"]],[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.content.placeholder\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send_email\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.send_email\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/saved/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/archive/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportListController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport pdfmixin from '../../../mixins/worksitediary_pdf';\n\nTaxmanTaxreportListController = GeneralReportController.extend(pdfmixin, {\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    mappedFilters: Em.computed('filter_value', function () {\n        var arr;\n        arr = [];\n        arr.push({\n            name: 'export_month',\n            value: this.get('filter_value'),\n        });\n        return arr;\n    }),\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 0;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: moment().subtract(count, 'months').format('YYYY-MM'),\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n});\n\nexport default TaxmanTaxreportListController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/archive/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportListRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTaxmanTaxreportListRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    queryParams: {\n        export_month: {\n            refreshModel: true,\n        },\n    },\n});\n\nexport default TaxmanTaxreportListRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Jx9N3D6D\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control\\\",[24,[\\\"months\\\"]],[24,[\\\"filter_value\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.taxman_reports\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"order\\\",\\\"query\\\"],[\\\"export_taxman\\\",\\\"date-\\\",[24,[\\\"mappedFilters\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.taxman_contract_reports\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"order\\\",\\\"query\\\"],[\\\"export_taxman_urakka\\\",\\\"date-\\\",[24,[\\\"mappedFilters\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/archive/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListAddController;\n\nimport Ember from 'ember';\n\nTaxmanContractListAddController = Ember.Controller.extend({\n    launchProjectUpdate: false,\n    Collector: Em.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    employers: Ember.computed(function () {\n        return this.store.findAll('employer');\n    }),\n    selectedMonth: 0,\n    contracts: Em.A([]),\n    mandatoryFields: Em.computed(function () {\n        var field, field_obj, fields, tmp_fields;\n        tmp_fields = [];\n        fields = this.get('Collector').fields('urakkaraportointi');\n        for (field in fields) {\n            field_obj = fields[field];\n            if (\n                field !== 'contract_month' &&\n                field_obj.features != null &&\n                field_obj.features.mandatory\n            ) {\n                tmp_fields.push(field);\n            }\n        }\n        return tmp_fields;\n    }),\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 0;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: count,\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n    flipped_options: Ember.computed(function () {\n        var values;\n        values = Em.A([]);\n        values.push({\n            id: '1',\n            name: this.get('intl').t('general.yes'),\n        });\n        values.push({\n            id: '2',\n            name: this.get('intl').t('general.no'),\n        });\n        return values;\n    }),\n    contract_type_options: Ember.computed(function () {\n        var values;\n        values = Em.A([]);\n        values.push({\n            id: '1',\n            name: this.get('intl').t('taxman.contract.add.contract_type.1'),\n        });\n        values.push({\n            id: '2',\n            name: this.get('intl').t('taxman.contract.add.contract_type.2'),\n        });\n        //values.push( {id:'4', name:@get('intl').t(\"taxman.contract.add.contract_type.4\")} ) Not supported properly currently\n        return values;\n    }),\n    okToAdd: Ember.computed('selectedMonth', 'selectedProject', 'contract_number', function () {\n        var contractNumberSet, monthSet, projectSet;\n        monthSet = this.get('selectedMonth') != null && this.get('selectedMonth') !== '';\n        projectSet = this.get('selectedProject') != null && this.get('selectedProject') !== '';\n        contractNumberSet =\n            this.get('contract_number') != null && this.get('contract_number') !== '';\n        if (!monthSet) {\n            return false;\n        }\n        if (!projectSet) {\n            return false;\n        }\n        if (contractNumberSet && !projectSet) {\n            return false;\n        }\n        return true;\n    }),\n    updateContract: function (contract) {\n        var contract_number, params, project;\n        project = this.get('selectedProject');\n        contract_number = this.get('contract_number');\n        if ((!project && !contract_number) || !contract.contract_employer) {\n            return;\n        }\n        params = {\n            contract_employer: contract.contract_employer.get('id'),\n        };\n        if (project) {\n            params.contract_project = project.get('id');\n        } else if (contract_number) {\n            params.contract_number = contract_number;\n        }\n        params.order = 'contract_month-';\n        params.limit = 12;\n        return this.store.query('urakkaraportointi', params).then((all_records) => {\n            var getLatestRecordEndDate, records;\n            // EP-8664 change logic to use previous data instead of previous month\n            // filter the latest contract end date\n            getLatestRecordEndDate = all_records.mapBy('contract_end_date').sort().reverse();\n            records = all_records.filterBy('contract_end_date', getLatestRecordEndDate[0]);\n            Em.set(contract, 'old_contracts', all_records); // show old contracts\n            // if yhere are no records, display empty values\n            if (records.get('length') === 0) {\n                Em.set(contract, 'contract_billed', null);\n                Em.set(contract, 'contract_total_price', null);\n                Em.set(contract, 'contract_start_date', null);\n                return Em.set(contract, 'contract_end_date', null);\n            } else {\n                // if there are records, use the latest by contract_end_date\n                Em.set(contract, 'contract_billed', records.get('firstObject.contract_billed'));\n                Em.set(\n                    contract,\n                    'contract_total_price',\n                    records.get('firstObject.contract_total_price'),\n                );\n                Em.set(\n                    contract,\n                    'contract_start_date',\n                    records.get('firstObject.contract_start_date'),\n                );\n                Em.set(contract, 'contract_end_date', records.get('firstObject.contract_end_date'));\n                Em.set(contract, 'contract_flipped', records.get('firstObject.contract_flipped'));\n                Em.set(contract, 'contract_type', records.get('firstObject.contract_type'));\n                return this.set('contract_number', records.get('firstObject.contract_number'));\n            }\n        });\n    },\n    actions: {\n        addNewContract: function () {\n            var obj;\n            obj = {\n                employer: this.get('model.contract_employer'),\n                flipped_tax: this.get('model.contract_flipped'),\n                contract_type: this.get('model.contract_type'),\n                first_worker: this.get('model.contract_first_worker'),\n                total_price: this.get('model.contract_total_price'),\n                contract_start: this.get('model.contract_start_date'),\n                contract_end: this.get('model.contract_end_date'),\n                billed: this.get('model.contract_billed'),\n                description: this.get('model.contract_description'),\n            };\n            return this.get('contracts').pushObject(obj);\n        },\n        save: function () {\n            var i, missingFields, records, self, validated;\n            self = this;\n            this.set('spinIsLoading', true);\n            this.set('disabled', true);\n            this.set('errorMessage', null);\n            records = [];\n            missingFields = [];\n            i = 0;\n            this.get('contracts').forEach((contract) => {\n                var contract_record, currentContractMissingFields, field, j, len, ref;\n                currentContractMissingFields = [];\n                ref = this.get('mandatoryFields');\n                // try to validate\n                for (j = 0, len = ref.length; j < len; j++) {\n                    field = ref[j];\n                    if (\n                        field === 'contract_first_worker' &&\n                        contract['contract_type'] === '2' &&\n                        contract[field] === void 0\n                    ) {\n                        currentContractMissingFields.push(field);\n                    } else if (field !== 'contract_first_worker' && contract[field] === void 0) {\n                        currentContractMissingFields.push(field);\n                    }\n                }\n                missingFields[i] = currentContractMissingFields;\n                contract_record = self.store.createRecord('urakkaraportointi', {\n                    contract_employer: contract.contract_employer,\n                    contract_end_date: contract.contract_end_date,\n                    contract_first_worker: contract.contract_first_worker,\n                    contract_flipped: contract.contract_flipped,\n                    contract_month: moment()\n                        .subtract(self.get('selectedMonth'), 'months')\n                        .format('YYYY-MM'),\n                    contract_project: self.get('selectedProject'),\n                    contract_number: this.get('contract_number'),\n                    contract_total_price: contract.contract_total_price,\n                    contract_billed: contract.contract_billed,\n                    contract_start_date: contract.contract_start_date,\n                    contract_type: contract.contract_type,\n                    contract_description: contract.contract_description,\n                });\n                records.push(contract_record);\n                return i++;\n            });\n            this.set('missingFields', missingFields);\n            validated = records.invoke('validate');\n            return Em.RSVP.Promise.all(validated).then(() => {\n                var saved_records;\n                if (records.filterBy('isValid', false).length > 0) {\n                    this.set('errorMessage', this.get('intl').t('general_add.error'));\n                    this.set('spinIsLoading', false);\n                    this.set('disabled', false);\n                    return;\n                }\n                saved_records = records.invoke('save');\n                return Em.RSVP.Promise.all(saved_records)\n                    .then(() => {\n                        this.set('spinIsLoading', false);\n                        this.set('disabled', false);\n                        this.set('contracts', Em.A([]));\n                        return this.transitionToRoute('taxman.contract-list.index');\n                    })\n                    .catch((reason) => {\n                        this.set('errorMessage', reason.errors[0].error_msg);\n                        self.set('spinIsLoading', false);\n                        return self.set('disabled', false);\n                    });\n            });\n        },\n        removeContract: function (contract) {\n            return this.get('contracts').removeObject(contract);\n        },\n        setEmployer: function (contract, value) {\n            if (Ember.typeOf(value) === 'instance') {\n                Em.set(contract, 'contract_employer', value);\n                return this.updateContract(contract);\n            }\n        },\n        setProject: function (value) {\n            return this.set('selectedProject', value);\n        },\n    },\n});\n\nexport default TaxmanContractListAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nTaxmanContractListAddRoute = GeneralAddRoute.extend({\n    modelName: 'urakkaraportointi',\n    controllerName: 'taxman/contract-list/add',\n    //    model: ->\n    //        self = @\n    //        params = {}\n    //        params.sideload = true\n    //        newest = @.store.query('urakkaraportointi', params)\n    //        newest.then ->\n    //            return newest.get(\"firstObject\")\n    actions: {\n        willTransition: function (transition) {\n            this.controller.set('selectedProject', null);\n            this.controller.set('contracts', Em.A([]));\n            return this.controller.toggleProperty('launchProjectUpdate');\n        },\n    },\n});\n\nexport default TaxmanContractListAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"uq3Itezd\",\"block\":\"{\\\"symbols\\\":[\\\"contract\\\",\\\"index\\\",\\\"field\\\",\\\"contract\\\",\\\"old_contract\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.contract-list\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"taxman.contract-list\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.project\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"urakkaraportointi.contract_project\\\"],[[\\\"change\\\"],[\\\"setProject\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.contract_number\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"form-control input-lg\\\",\\\"contract_number\\\",[24,[\\\"contract_number\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.month\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"name\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control input-lg\\\",\\\"contract_month\\\",[24,[\\\"months\\\"]],[24,[\\\"selectedMonth\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"okToAdd\\\"]]],null,{\\\"statements\\\":[[7,\\\"h3\\\",true],[10,\\\"id\\\",\\\"taxman-contract-not-enough-info\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.please_select_project_and_month\\\"],null],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"okToAdd\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"contracts\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"close\\\"],[12,\\\"aria-label\\\",[28,\\\"t\\\",[\\\"general.close\\\"],null]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeContract\\\",[23,4,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.employer\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_employer\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"disabled\\\"],[\\\"urakkaraportointi.contract_employer\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setEmployer\\\",[23,4,[]]],null],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.flipped_tax\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_flipped\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"name\\\",\\\"options\\\",\\\"value\\\",\\\"disabled\\\",\\\"prompt\\\"],[\\\"form-control\\\",\\\"contract_flipped\\\",[24,[\\\"flipped_options\\\"]],[23,4,[\\\"contract_flipped\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.contract_type\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_type\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"name\\\",\\\"options\\\",\\\"value\\\",\\\"disabled\\\",\\\"prompt\\\"],[\\\"form-control\\\",\\\"contract_type\\\",[24,[\\\"contract_type_options\\\"]],[23,4,[\\\"contract_type\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.total_price\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_total_price\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"number\\\",\\\"contract_total_price\\\",\\\"form-control\\\",[23,4,[\\\"contract_total_price\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"contract_type\\\"]],\\\"2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.first_worker\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_first_worker\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"form-control\\\",\\\"contract_first_worker\\\",[23,4,[\\\"contract_first_worker\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.contract_start\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_start_date\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"form-control\\\",\\\"contract_start_date\\\",[23,4,[\\\"contract_start_date\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.contract_end\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_end_date\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"form-control\\\",\\\"contract_end_date\\\",[23,4,[\\\"contract_end_date\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.billed\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_billed\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"number\\\",\\\"contract_billed\\\",\\\"form-control\\\",[23,4,[\\\"contract_billed\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.description\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_description\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"text\\\",\\\"contract_description\\\",\\\"form-control\\\",[23,4,[\\\"contract_description\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"old_contracts\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.previous_rows\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.month\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.billed\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.total_price\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,4,[\\\"old_contracts\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"contract_month\\\",\\\"urakkaraportointi\\\",[23,5,[\\\"contract_month\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"contract_billed\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"contract_total_price\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"name\\\",\\\"add_new_contract\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNewContract\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.add_new\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"missingFields\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"missingFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"formeditor.form\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"add\\\",[[23,2,[]],1],null],false],[0,\\\", \\\"],[1,[28,\\\"t\\\",[\\\"worktime.validation.mandatory\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"urakkaraportointi.\\\",[23,3,[]]],null]],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[22,\\\"errorMessage\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"spinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nTaxmanContractListEditController = GeneralAddController.extend({\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n});\n\nexport default TaxmanContractListEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nTaxmanContractListEditRoute = GeneralAddRoute.extend({\n    modelName: 'urakkaraportointi',\n    controllerName: 'taxman/contract-list/edit',\n    edit: true,\n    afterSave: 'taxman.contract-list.index',\n});\n\nexport default TaxmanContractListEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"tJ2jVDb3\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nTaxmanContractListHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default TaxmanContractListHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"j+Rs3KlI\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"project\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nTaxmanContractListIndexController = GeneralReportController.extend({\n    form: 'urakkaraportointi',\n    showColumns: ['contract_project', 'contract_month', 'contract_employer'],\n    queryParams: ['page', 'contract_project', 'contract_month', 'contract_employer'],\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'contract_employer',\n            }),\n            Em.Object.create({\n                field: 'contract_project',\n            }),\n            Em.Object.create({\n                field: 'contract_month',\n            }),\n        ]);\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'taxman.contract-list.edit',\n            historyRoute: 'taxman.contract-list.history',\n        }),\n    }),\n});\n\nexport default TaxmanContractListIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nTaxmanContractListIndexRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        contract_employer: {\n            refreshModel: true,\n        },\n        contract_project: {\n            refreshModel: true,\n        },\n        contract_month: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('urakkaraportointi', params);\n    },\n});\n\nexport default TaxmanContractListIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"soN1csZ7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"iFgGTfEy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTaxmanRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default TaxmanRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxreportComponent;\n\nimport Ember from 'ember';\n\nimport ccrep from '../../../components/cc-report';\n\nTaxreportComponent = ccrep.extend({\n    gui: Ember.inject.service(),\n    rowsOnPage: 25,\n    errorPage: 1,\n    dataPage: 1,\n    _error: Ember.computed('error', function () {\n        if (\n            this.startswith(\n                this.get('error_description'),\n                \"Exception: Contact person must be given in buffer['contact_person']\",\n            )\n        ) {\n            return 'contact_missing';\n        }\n        return this.get('error');\n    }),\n    startswith: function (str, startsas) {\n        if (Ember.typeOf(str) !== 'string') {\n            return false;\n        }\n        return str.substring(0, startsas.length) === startsas;\n    },\n    validations: Ember.computed('chartData', function () {\n        var data;\n        this.set('errorPage', 1);\n        this.set('dataPage', 1);\n        if (!this.get('chartData.validations')) {\n            return;\n        }\n        data = this.get('chartData.validations');\n        data.forEach(function (item) {\n            item.message = JSON.parse(item.message);\n            return (item.message.text = new Ember.String.htmlSafe(item.message.text));\n        });\n        return data;\n    }),\n    chartDataOnPage: Ember.computed('dataPage', 'chartData.data', function () {\n        if (!this.get('chartData.data')) {\n            return;\n        }\n        return this.get('chartData.data').slice(\n            (this.get('dataPage') - 1) * this.get('rowsOnPage'),\n            this.get('dataPage') * this.get('rowsOnPage'),\n        );\n    }),\n    validationsOnPage: Ember.computed('errorPage', 'validations', function () {\n        if (!this.get('validations')) {\n            return;\n        }\n        return this.get('validations').slice(\n            (this.get('errorPage') - 1) * this.get('rowsOnPage'),\n            this.get('errorPage') * this.get('rowsOnPage'),\n        );\n    }),\n    datapages: Ember.computed('chartData.data.length', function () {\n        return Math.ceil(this.get('chartData.data.length') / this.get('rowsOnPage'));\n    }),\n    errorpages: Ember.computed('validations.length', function () {\n        return Math.ceil(this.get('validations.length') / this.get('rowsOnPage'));\n    }),\n    tzOffset: Ember.computed.alias('gui.tzOffset'),\n});\n\nexport default TaxreportComponent;\n","export default Ember.HTMLBars.template({\"id\":\"TRHbwloz\",\"block\":\"{\\\"symbols\\\":[\\\"vstyonte\\\",\\\"user\\\",\\\"error\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.taxreport.error.title\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"_error\\\"]],\\\"contact_missing\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contactnotset\\\"],null],false],[0,\\\"\\\\n                    \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"settings.general\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"taxman.set_contact\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"taxman.taxreport.error.type.\\\",[24,[\\\"error\\\"]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"validationsOnPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,3,[\\\"message\\\",\\\"text\\\"]],false],[0,\\\" \\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[[23,3,[\\\"message\\\",\\\"form\\\"]],\\\",\\\",[23,3,[\\\"message\\\",\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.taxman.fix_here\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"onlyErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxreport.no_errors\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"rowsOnPage\\\"]],[24,[\\\"errorPage\\\"]],[24,[\\\"errorpages\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"onlyErrors\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"chartDataOnPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.worksite\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"h_worksite_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[23,1,[\\\"h_worksite_number\\\"]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"i\\\",true],[8],[1,[23,1,[\\\"h_worksite_address\\\"]],false],[0,\\\", \\\"],[1,[23,1,[\\\"h_worksite_zip\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"h_worksite_city\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.employer\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"h_employer_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[23,1,[\\\"h_employer_id\\\"]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"i\\\",true],[8],[0,\\\"(\\\"],[1,[23,1,[\\\"h_employer_contact_lastname\\\"]],false],[0,\\\"    \\\"],[1,[23,1,[\\\"h_employer_contact_firstname\\\"]],false],[0,\\\"   \\\"],[1,[23,1,[\\\"h_employer_contact_phone\\\"]],false],[0,\\\"\\\\n                        )\\\"],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"h_relation\\\"]],\\\"2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.rental\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"h_leasing_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[23,1,[\\\"h_leasing_id\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.worker\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.taxnumber\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.birthdate\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.work_period\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"firstname\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"taxnumber\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"moment-format\\\",[[28,\\\"concat\\\",[[23,2,[\\\"birthdate\\\"]],\\\" 00Z\\\"],null]],[[\\\"format\\\"],[\\\"d.m.YYYY\\\"]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"moment-format\\\",[[28,\\\"concat\\\",[[23,2,[\\\"startdate\\\"]],\\\" 00Z\\\"],null]],[[\\\"format\\\"],[\\\"d.m.YYYY\\\"]]],false],[0,\\\" -\\\\n                                    \\\"],[1,[28,\\\"moment-format\\\",[[28,\\\"concat\\\",[[23,2,[\\\"enddate\\\"]],\\\" 00Z\\\"],null]],[[\\\"format\\\"],[\\\"d.m.YYYY\\\"]]],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                   \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxreport.add.no_data\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"rowsOnPage\\\"]],[24,[\\\"dataPage\\\"]],[24,[\\\"datapages\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport-component/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/add/add-taxreport-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddAddTaxreportCompComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../../../../collector/record-comp/component';\n\nTaxmanTaxreportAddAddTaxreportCompComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n    Collector: Em.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    cc: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    setValues: Em.on('init', function () {\n        var values;\n        values = [];\n        this.set('record', this.get('store').createRecord(this.get('form').dasherize(), values));\n        this.set('record.export_month', this.get('month') + '-01');\n        this.set('record.etype', 'P');\n        return this.set('record_id', 'new');\n    }),\n    save_record: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var c, date, filename, month, promise, record, url;\n            record = this.get('record');\n            month = record.get('export_month');\n            date = moment(month).startOf('month').format('YYYY-MM');\n            c = this.get('Collector');\n            filename = record.get('export_name').replace(/[^A-Za-z0-9]/g, '') || 'verottaja';\n            url =\n                this.get('key') +\n                '?contract_month=' +\n                date +\n                '&format=verottaja&type=' +\n                record.get('etype') +\n                '&code=' +\n                record.get('etype_code');\n            if (record.get('maincontractor')) {\n                url += '&maincontractor=' + record.get('maincontractor.id');\n            }\n            promise = c.ccapi({\n                url: url,\n            });\n            return promise.then((back) => {\n                if (back === '') {\n                    alert(this.get('intl').t('taxman.no_data'));\n                    reject();\n                    return;\n                }\n                /*\n        a = document.createElement 'a'\n        a.href = 'data:attachment/csv;,' + back\n        a.target = '_blank'\n        a.download = filename + '.txt'\n        document.body.appendChild(a)\n        a.click()\n        */\n                record.set('export_period_file', [\n                    {\n                        name: filename + '.txt',\n                        file: 'data:text/plain;base64,' + btoa(back),\n                    },\n                ]);\n                return record.save().then((back) => {\n                    var a, file_url, files;\n                    if (c.testNeeds(['products.autotaxman'])) {\n                        return this.sendTaxmanFile(record, resolve, reject);\n                    }\n                    files = back.get('export_period_file');\n                    file_url = files[0].url;\n                    a = document.createElement('a');\n                    a.href = this.get('Collector').getApiUrl() + file_url;\n                    a.target = '_blank';\n                    a.download = filename + '.txt';\n                    document.body.appendChild(a);\n                    a.click();\n                    return resolve();\n                });\n            });\n        });\n    },\n    sendTaxmanFile: function (record, resolve, reject) {\n        var promise;\n        promise = this.get('cc').request('taxmanurakkasend?id=' + record.get('id'));\n        return promise.then(\n            (result) => {\n                if (result.response.errors.length > 0) {\n                    record.set('status', 'error');\n                    record.set('statusfile', [\n                        {\n                            name: 'response.html',\n                            file: 'data:text/plain;base64,' + btoa(result.html),\n                        },\n                    ]);\n                    return record.save().then(() => {\n                        this.downloadFile(\n                            'response.html',\n                            record.get('statusfile.firstObject.s3url'),\n                        );\n                        this.get('dialogs').alert(this.get('intl').t('taxman.send_failed'));\n                        return reject();\n                    });\n                } else {\n                    record.set('status', 'approved');\n                    if (result.response.deliveryId) {\n                        record.set('etype_code', result.response.deliveryId);\n                    }\n                    record.save();\n                    this.get('dialogs').alert(this.get('intl').t('taxman.send_success'));\n                    return resolve();\n                }\n            },\n            (e) => {\n                return reject(e);\n            },\n        );\n    },\n    downloadFile: function (filename, url) {\n        var a;\n        a = document.createElement('a');\n        a.href = url;\n        a.target = '_blank';\n        a.download = filename + '.txt';\n        document.body.appendChild(a);\n        return a.click();\n    },\n});\n\nexport default TaxmanTaxreportAddAddTaxreportCompComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexController;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportIndexController = Ember.Controller.extend({\n    indexController: Ember.inject.controller('taxman.taxreport-contract.index'),\n    key: Ember.computed.alias('indexController.key'),\n});\n\nexport default TaxmanTaxreportIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddRoute;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportAddRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n    actions: {\n        fileCreated: function () {\n            return this.transitionTo('taxman.taxreport-contract');\n        },\n        cancel: function () {\n            return this.transitionTo('taxman.taxreport-contract');\n        },\n    },\n});\n\nexport default TaxmanTaxreportAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ZJE+krKQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.create_new_taxman_contract\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"taxman/taxreport-contract/add/add-taxreport-comp\\\",null,[[\\\"form\\\",\\\"month\\\",\\\"maincontractor\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"key\\\"],[\\\"export_taxman_urakka\\\",[24,[\\\"model\\\",\\\"month\\\"]],[24,[\\\"model\\\",\\\"maincontractor\\\"]],\\\"fileCreated\\\",\\\"cancel\\\",[24,[\\\"key\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport-contract/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexController;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportIndexController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    selectedMonth: 0,\n    maincontractor: null,\n    projectFilter: null,\n    key: 'vsurakka',\n    contacts: Ember.computed('maincontractor', function () {\n        if (this.get('maincontractor')) {\n            return this.store.query('exportContactPerson', {\n                employer: this.get('maincontractor.id'),\n            });\n        } else {\n            return this.store.findAll('exportContactPerson');\n        }\n    }),\n    contactNotSet: Em.computed('contacts.[]', function () {\n        var contacts;\n        contacts = this.get('contacts').filter((contact) => {\n            return contact.get('isNew') === false;\n        });\n        return contacts.length <= 0;\n    }),\n    settings: Em.Object.create({\n        form: 'export_contact_person',\n    }),\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 0;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: count,\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n    values: Ember.computed('selectedMonth', 'maincontractor', 'projectFilter', function () {\n        var arr, moment_month, month;\n        month = this.get('selectedMonth');\n        moment_month = moment().subtract(month, 'months');\n        arr = [\n            {\n                name: 'contract_month',\n                value: moment_month.format('YYYY-MM'),\n            },\n        ];\n        if (this.get('projectFilter')) {\n            arr.push({\n                name: 'contract_project',\n                value: this.get('projectFilter.id'),\n            });\n        }\n        if (this.get('maincontractor') && !this.get('projectFilter')) {\n            arr.push({\n                name: 'maincontractor',\n                value: this.get('maincontractor.id'),\n            });\n        }\n        return arr;\n    }),\n    employerField: Ember.computed(function () {\n        if (this.get('Collector').testNeedsOne('worktime')) {\n            return 'worktime.employer';\n        } else {\n            return 'presence.employer';\n        }\n    }),\n    projectField: Ember.computed(function () {\n        if (this.get('Collector').testNeedsOne('worktime')) {\n            return 'worktime.project';\n        } else {\n            return 'presence.project';\n        }\n    }),\n    actions: {\n        maincontractorChanged: function (value) {\n            return this.set('maincontractor', value);\n        },\n        refreshPreview: function () {\n            return this.notifyPropertyChange('selectedMonth');\n        },\n        projectChanged: function (value) {\n            return this.set('projectFilter', value);\n        },\n        toggleModal: function (settings, record) {\n            if (record) {\n                this.notifyPropertyChange('contacts');\n            }\n            this.toggleProperty('showModal');\n            return false;\n        },\n    },\n});\n\nexport default TaxmanTaxreportIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexRoute;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportIndexRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    actions: {\n        getTaxmanFile: function (filters) {\n            var date_between, date_start;\n            date_between = filters.findBy('name', 'contract_month').value;\n            date_start = date_between.split('_')[0];\n            return this.transitionTo('taxman.taxreport-contract.add', date_start);\n        },\n    },\n});\n\nexport default TaxmanTaxreportIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"llSlygz1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.export_taxman.export_month\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control add-fields\\\",[24,[\\\"months\\\"]],[24,[\\\"selectedMonth\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"modules.multiple_companies\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"employerField\\\"]]],[[\\\"change\\\"],[\\\"maincontractorChanged\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"value\\\"],[\\\"projectChanged\\\",[24,[\\\"projectFilter\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"contactNotSet\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contactnotset\\\"],null],false],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.set_contact\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"getTaxmanFile\\\",[24,[\\\"values\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.get_taxman_file\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"refreshPreview\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.report.preview.refresh\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"taxman/taxreport-component\\\",null,[[\\\"key\\\",\\\"query\\\",\\\"onlyErrors\\\",\\\"requestMethod\\\"],[[24,[\\\"key\\\"]],[24,[\\\"values\\\"]],true,\\\"POST\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"taxman.add_contact\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"settings\\\"]],\\\"toggleModal\\\",\\\"toggleModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport-contract/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportContractRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTaxmanTaxreportContractRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default TaxmanTaxreportContractRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2EIAHxVQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport-contract/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/add/add-taxreport-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddAddTaxreportCompComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../../../../collector/record-comp/component';\n\nTaxmanTaxreportAddAddTaxreportCompComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n    Collector: Em.inject.service('collector-service'),\n    cc: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    intl: Em.inject.service(),\n    didReceiveAttrs: function () {\n        var values;\n        values = [];\n        this.set('record', this.get('store').createRecord(this.get('form').dasherize(), values));\n        this.set('record.export_month', this.get('month'));\n        this.set('record.etype', 'P');\n        return this.set('record_id', 'new');\n    },\n    save_record: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var c, date, filename, month, promise, record, url;\n            record = this.get('record');\n            month = record.get('export_month');\n            date =\n                moment(month).startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment(month).endOf('month').format('YYYY-MM-DD');\n            c = this.get('Collector');\n            filename = record.get('export_name').replace(/[^A-Za-z0-9]/g, '') || 'verottaja';\n            url =\n                this.get('key') +\n                '?date=' +\n                date +\n                '&format=verottaja&type=' +\n                record.get('etype') +\n                '&code=' +\n                record.get('etype_code');\n            if (record.get('maincontractor')) {\n                url += '&maincontractor=' + record.get('maincontractor.id');\n            }\n            promise = c.ccapi({\n                url: url,\n            });\n            return promise.then((back) => {\n                if (back === '') {\n                    alert(this.get('intl').t('taxman.no_data'));\n                    reject();\n                    return;\n                }\n                /*\n        a = document.createElement 'a'\n        a.href = 'data:attachment/csv;,' + back\n        a.target = '_blank'\n        a.download = filename + '.txt'\n        document.body.appendChild(a)\n        a.click()\n        */\n                record.set('export_period_file', [\n                    {\n                        name: filename + '.txt',\n                        file: 'data:text/plain;base64,' + btoa(back),\n                    },\n                ]);\n                return record.save().then((back) => {\n                    var a, file_url, files;\n                    if (c.testNeeds(['products.autotaxman'])) {\n                        return this.sendTaxmanFile(record, resolve, reject);\n                    }\n                    files = back.get('export_period_file');\n                    file_url = files[0].url;\n                    a = document.createElement('a');\n                    a.href = this.get('Collector').getApiUrl() + file_url;\n                    a.target = '_blank';\n                    a.download = filename + '.txt';\n                    document.body.appendChild(a);\n                    a.click();\n                    return resolve();\n                });\n            });\n        });\n    },\n    sendTaxmanFile: function (record, resolve, reject) {\n        var promise;\n        promise = this.get('cc').request('taxmansend?id=' + record.get('id'));\n        return promise.then(\n            (result) => {\n                if (result.response.errors.length > 0) {\n                    record.set('status', 'error');\n                    record.set('statusfile', [\n                        {\n                            name: 'response.html',\n                            file: 'data:text/plain;base64,' + btoa(result.html),\n                        },\n                    ]);\n                    return record.save().then(() => {\n                        this.downloadFile(\n                            'response.html',\n                            record.get('statusfile.firstObject.s3url'),\n                        );\n                        this.get('dialogs').alert(this.get('intl').t('taxman.send_failed'));\n                        return reject();\n                    });\n                } else {\n                    record.set('status', 'approved');\n                    if (result.response.deliveryId) {\n                        record.set('etype_code', result.response.deliveryId);\n                    }\n                    record.save();\n                    this.get('dialogs').alert(this.get('intl').t('taxman.send_success'));\n                    return resolve();\n                }\n            },\n            (e) => {\n                return reject(e);\n            },\n        );\n    },\n    downloadFile: function (filename, url) {\n        var a;\n        a = document.createElement('a');\n        a.href = url;\n        a.target = '_blank';\n        a.download = filename + '.txt';\n        document.body.appendChild(a);\n        return a.click();\n    },\n});\n\nexport default TaxmanTaxreportAddAddTaxreportCompComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddController;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportAddController = Ember.Controller.extend({\n    indexController: Ember.inject.controller('taxman.taxreport.index'),\n    key: Ember.computed.alias('indexController.key'),\n});\n\nexport default TaxmanTaxreportAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddRoute;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportAddRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n    actions: {\n        fileCreated: function () {\n            return this.transitionTo('taxman.taxreport');\n        },\n        cancel: function () {\n            return this.transitionTo('taxman.taxreport');\n        },\n    },\n});\n\nexport default TaxmanTaxreportAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"oAUz5yj9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.create_new_taxman\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"taxman/taxreport/add/add-taxreport-comp\\\",null,[[\\\"form\\\",\\\"month\\\",\\\"maincontractor\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"key\\\"],[\\\"export_taxman\\\",[24,[\\\"model\\\",\\\"month\\\"]],[24,[\\\"model\\\",\\\"maincontractor\\\"]],\\\"fileCreated\\\",\\\"cancel\\\",[24,[\\\"key\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexController;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nTaxmanTaxreportIndexController = Ember.Controller.extend({\n    session: Em.inject.service(),\n    exportFile: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    selectedMonth: 0,\n    maincontractor: null,\n    projectFilter: null,\n    generatingPdf: false,\n    key: 'vstyonte',\n    contacts: Em.computed('maincontractor', function () {\n        if (this.get('maincontractor')) {\n            return this.store.query('exportContactPerson', {\n                employer: this.get('maincontractor.id'),\n            });\n        } else {\n            return this.store.findAll('exportContactPerson');\n        }\n    }),\n    contactNotSet: Em.computed('contacts.[]', function () {\n        var contacts;\n        contacts = this.get('contacts').filter((contact) => {\n            return contact.get('isNew') === false;\n        });\n        return contacts.length <= 0;\n    }),\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 0;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: count,\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n    settings: Em.Object.create({\n        form: 'export_contact_person',\n    }),\n    values: Ember.computed(\n        'selectedMonth',\n        'maincontractor',\n        'projectFilter',\n        'ownerFilter',\n        function () {\n            var arr, moment_month, month;\n            month = this.get('selectedMonth');\n            moment_month = moment().subtract(month, 'months');\n            arr = [\n                {\n                    name: 'date',\n                    value:\n                        moment_month.startOf('month').format('YYYY-MM-DD') +\n                        '_' +\n                        moment_month.endOf('month').format('YYYY-MM-DD'),\n                },\n            ];\n            if (this.get('projectFilter')) {\n                arr.push({\n                    name: 'project',\n                    value: this.get('projectFilter.id'),\n                });\n            }\n            if (this.get('maincontractor') && !this.get('projectFilter')) {\n                arr.push({\n                    name: 'maincontractor',\n                    value: this.get('maincontractor.id'),\n                });\n            }\n            if (this.get('ownerFilter')) {\n                arr.push({\n                    name: 'owner',\n                    value: this.get('ownerFilter.id'),\n                });\n            }\n            return arr;\n        },\n    ),\n    employerField: Ember.computed(function () {\n        if (this.get('Collector').testNeedsOne('worktime')) {\n            return 'worktime.employer';\n        } else {\n            return 'presence.employer';\n        }\n    }),\n    projectField: Ember.computed(function () {\n        if (this.get('Collector').testNeedsOne('worktime')) {\n            return 'worktime.project';\n        } else {\n            return 'presence.project';\n        }\n    }),\n    actions: {\n        refreshPreview: function () {\n            // Kikka miljoona is NO HAX\n            return this.notifyPropertyChange('selectedMonth');\n        },\n        maincontractorChanged: function (value) {\n            return this.set('maincontractor', value);\n        },\n        projectChanged: function (value) {\n            return this.set('projectFilter', value);\n        },\n        ownerChanged: function (value) {\n            return this.set('ownerFilter', value);\n        },\n        toggleModal: function (settings, record) {\n            if (record) {\n                this.notifyPropertyChange('contacts');\n            }\n            this.toggleProperty('showModal');\n            return false;\n        },\n        exportPdf: function () {\n            var data, filter, filters, i, len, promise, url;\n            this.set('generatingPdf', true);\n            filters = this.get('values');\n            data = {};\n            for (i = 0, len = filters.length; i < len; i++) {\n                filter = filters[i];\n                data[filter['name']] = filter['value'];\n            }\n            if (config.environment === 'development') {\n                data.capi_url = 'http://capi/';\n                data.ttapi_url = 'http://ttapi/';\n            } else {\n                data.capi_url = config.APP.COLLECTOR_API_URL + '/';\n                data.ttapi_url = this.get('ttapi').host + '/';\n            }\n            data.dataType = 'text';\n            data.type = 'base64';\n            data.key = this.get('key');\n            url = 'pdf/taxman';\n            promise = this.get('Collector').ttapi({\n                dataType: 'text',\n                url: url,\n                data: data,\n                type: 'POST',\n            });\n            return promise.then((data) => {\n                this.set('generatingPdf', false);\n                return this.get('exportFile').exportFile(data, 'export', 'pdf', true);\n            });\n        },\n    },\n});\n\nexport default TaxmanTaxreportIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexRoute;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportIndexRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    actions: {\n        getTaxmanFile: function (filters) {\n            var date_between, date_start;\n            date_between = filters.findBy('name', 'date').value;\n            date_start = date_between.split('_')[0];\n            return this.transitionTo('taxman.taxreport.add', date_start);\n        },\n    },\n});\n\nexport default TaxmanTaxreportIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xbHxZcpZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.export_taxman.export_month\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control add-fields\\\",[24,[\\\"months\\\"]],[24,[\\\"selectedMonth\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"modules.multiple_companies\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"employerField\\\"]]],[[\\\"change\\\"],[\\\"maincontractorChanged\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"value\\\"],[\\\"projectChanged\\\",[24,[\\\"projectFilter\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.owner\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"project.owner\\\"],[[\\\"change\\\",\\\"value\\\"],[\\\"ownerChanged\\\",[24,[\\\"ownerFilter\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"help-dialog\\\",null,[[\\\"translation_key\\\",\\\"title\\\",\\\"classNames\\\"],[\\\"taxman.help_dialog\\\",[28,\\\"t\\\",[\\\"taxman.help_title\\\"],null],\\\"inline-block\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"contactNotSet\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contactnotset\\\"],null],false],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.set_contact\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"getTaxmanFile\\\",[24,[\\\"values\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.get_taxman_file\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"refreshPreview\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.report.preview.refresh\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"disabled\\\",[22,\\\"generatingPdf\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.report.export_pdf\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"taxman/taxreport-component\\\",null,[[\\\"key\\\",\\\"query\\\",\\\"requestMethod\\\"],[[24,[\\\"key\\\"]],[24,[\\\"values\\\"]],\\\"POST\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"taxman.add_contact\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"settings\\\"]],\\\"toggleModal\\\",\\\"toggleModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTaxmanTaxreportRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default TaxmanTaxreportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"+F6eWNlE\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"q3PgIn2J\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportController;\n\nimport Ember from 'ember';\n\nThereportController = Ember.Controller.extend({\n    intl: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    subMenus: Em.computed('model', function () {\n        var menus;\n        menus = Em.A([]);\n        this.get('model').forEach((item, index) => {\n            return menus.pushObject({\n                text: item.name,\n                link: ['thereport.page', index],\n            });\n        });\n        menus.pushObject({\n            text: this.get('intl').t('thereport.settings'),\n            link: ['thereport.settings'],\n        });\n        return menus;\n    }),\n    saveReport: function (id, name, settings) {\n        return this.get('Collector').ttapi({\n            method: 'post',\n            url: 'comboreport',\n            data: {\n                id: id,\n                name: name,\n                settings: JSON.stringify(settings),\n            },\n        });\n    },\n    removeReport: function (id) {\n        return this.get('Collector').ttapi({\n            method: 'delete',\n            url: 'comboreport/' + id,\n        });\n    },\n});\n\nexport default ThereportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/form-reporteditor/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormReporteditorComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nFormReporteditorComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    showSaveButton: Ember.computed.or('settings.form', 'settings.custom'),\n    rowsPerPageOptions: Em.computed('settings.form', function () {\n        return Em.A([\n            Em.Object.create({\n                id: 25,\n                name: '25',\n            }),\n            Em.Object.create({\n                id: 50,\n                name: '50',\n            }),\n            Em.Object.create({\n                id: 100,\n                name: '100',\n            }),\n        ]);\n    }),\n    forms: Ember.computed(function () {\n        var c, forms, intl, ret, supportedForms;\n        supportedForms = ['worktime', 'abcense', 'bill', 'presence', 'materiallog','orientation'];\n        c = this.get('Collector');\n        intl = this.get('intl');\n        forms = c.forms();\n        ret = Em.A([]);\n        $.each(forms, (key, item) => {\n            if (!(indexOf.call(supportedForms, key) >= 0 || item.name)) {\n                return;\n            }\n            if (item.name) {\n                return ret.pushObject(\n                    Ember.Object.create({\n                        id: key,\n                        name: intl.t(item.name),\n                    }),\n                );\n            } else {\n                return ret.pushObject(\n                    Ember.Object.create({\n                        id: key,\n                        name: intl.t('forms.' + key),\n                    }),\n                );\n            }\n        });\n        return ret;\n    }),\n    columns: Ember.computed('settings.form', 'groupingIsOn', function () {\n        var c, columns, form, groupableColumnsList, groupingIsOn, intl, ret;\n        groupableColumnsList = [\n            'date',\n            'number',\n            'hours',\n            'price',\n            'big_price',\n            'dropdown_values',\n            'dropdown_options',\n        ];\n        c = this.get('Collector');\n        form = this.get('settings.form');\n        intl = this.get('intl');\n        groupingIsOn = this.get('groupingIsOn');\n        if (!form || !c.formExists(form)) {\n            return Em.A([]);\n        }\n        columns = c.fields(form);\n        ret = Em.A([]);\n        ret.push(\n            Ember.Object.create({\n                id: 'id',\n                name: 'id',\n            }),\n        );\n        $.each(columns, (key, item) => {\n            var ref;\n            if (\n                groupingIsOn &&\n                !((ref = item.type), indexOf.call(groupableColumnsList, ref) >= 0)\n            ) {\n                return;\n            }\n            return ret.pushObject(\n                Ember.Object.create({\n                    id: key,\n                    name: c.getTranslationForColumn(form, key),\n                }),\n            );\n        });\n        return ret;\n    }),\n    groupingIsOn: Ember.computed.gt('group_columns.length', 0),\n    groupByColumns: Ember.computed('settings.form', function () {\n        var c, columns, form, groupByColumnsList, ret_arr;\n        groupByColumnsList = ['database', 'dropdown_values', 'dropdown_options', 'date'];\n        c = this.get('Collector');\n        form = this.get('settings.form');\n        if (!form || !c.formExists(form)) {\n            return [];\n        }\n        columns = c.fields(form);\n        ret_arr = Em.A([]);\n        $.each(columns, function (key, item) {\n            var ref;\n            if (((ref = item.type), indexOf.call(groupByColumnsList, ref) >= 0)) {\n                return ret_arr.pushObject(\n                    Ember.Object.create({\n                        id: key,\n                        name: c.getTranslationForColumn(form, key),\n                    }),\n                );\n            }\n        });\n        ret_arr.pushObject(\n            Ember.Object.create({\n                id: 'all',\n                name: this.get('intl').t('general.sum_all'),\n            }),\n        );\n        return ret_arr;\n    }),\n    saveValues: Em.on('init', function () {\n        var settings;\n        settings = Em.Object.create({\n            calendar: this.get('settings.calendar'),\n            editorMode: false,\n            form: this.get('settings.form'),\n            group: this.get('settings.group'),\n            half: this.get('settings.half'),\n            header: this.get('settings.header'),\n            show_columns: this.get('settings.show_columns'),\n            rowsPerPage: this.get('settings.rowsPerPage'),\n        });\n        return this.set('originalSettings', settings);\n    }),\n    columnsObserver: Ember.observer('show_columns', function () {\n        var columns;\n        columns = this.get('show_columns');\n        return this.set('settings.show_columns', columns.join(','));\n    }),\n    groupObserver: Ember.observer('group_columns', function () {\n        var columns;\n        columns = this.get('group_columns');\n        return this.set('settings.group', columns.join(','));\n    }),\n    rowsPerPageObserver: Ember.observer('rowsPerPage', function () {\n        var rowsPerPage;\n        rowsPerPage = this.get('rowsPerPage.firstObject');\n        return this.set('settings.rowsPerPage', rowsPerPage);\n    }),\n    show_columns: Ember.computed('settings.show_columns', function () {\n        var show_columns;\n        show_columns = this.get('settings.show_columns');\n        if (show_columns) {\n            return show_columns.split(',');\n        } else {\n            return [];\n        }\n    }),\n    group_columns: Ember.computed('settings.group', function () {\n        var group;\n        group = this.get('settings.group');\n        if (group) {\n            return group.split(',');\n        } else {\n            return [];\n        }\n    }),\n    rowsPerPage: Ember.computed('settings.rowsPerPage', function () {\n        var rowsPerPage;\n        rowsPerPage = this.get('settings.rowsPerPage');\n        if (rowsPerPage) {\n            return [rowsPerPage];\n        } else {\n            return [25];\n        }\n    }),\n    actions: {\n        save: function () {\n            var settings;\n            settings = this.get('settings');\n            if (!settings.show_columns) {\n                settings.show_columns = 'empty';\n            }\n            if (this.get('save')) {\n                return this.save(settings);\n            }\n        },\n        remove: function () {\n            if (this.get('remove')) {\n                return this.remove(this.get('settings'));\n            }\n        },\n        cancel: function () {\n            var settings;\n            if (this.get('cancel')) {\n                this.cancel(this.get('settings'));\n            }\n            settings = this.get('originalSettings');\n            if (settings) {\n                this.set('settings.calendar', settings.calendar);\n                this.set('settings.form', settings.form);\n                this.set('settings.group', settings.group);\n                this.set('settings.half', settings.half);\n                this.set('settings.header', settings.header);\n                this.set('settings.show_columns', settings.show_columns);\n                return this.set('settings.rowsPerPage', settings.rowsPerPage);\n            }\n        },\n    },\n});\n\nexport default FormReporteditorComponent;\n","export default Ember.HTMLBars.template({\"id\":\"i4oUYqUT\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.header\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[24,[\\\"settings\\\",\\\"header\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"custom\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.form\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"classes\\\",\\\"value\\\",\\\"content\\\",\\\"promptTranslation\\\"],[\\\"form-control\\\",[24,[\\\"settings\\\",\\\"form\\\"]],[24,[\\\"forms\\\"]],\\\"general.select_choose\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"settings\\\",\\\"form\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"calendar\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.group\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"multi-buttons\\\",null,[[\\\"content\\\",\\\"values\\\",\\\"orderable\\\"],[[24,[\\\"groupByColumns\\\"]],[24,[\\\"group_columns\\\"]],true]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.columns\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"multi-buttons\\\",null,[[\\\"content\\\",\\\"values\\\",\\\"orderable\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"show_columns\\\"]],true]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.limit\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"multi-buttons\\\",null,[[\\\"content\\\",\\\"values\\\",\\\"orderable\\\",\\\"singleSelectMode\\\"],[[24,[\\\"rowsPerPageOptions\\\"]],[24,[\\\"rowsPerPage\\\"]],false,true]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.width\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"settings\\\",\\\"half\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"groupingIsOn\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.calendar\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"settings\\\",\\\"calendar\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSaveButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\"]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.remove\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn report-cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.cancel\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/thereport/form-reporteditor/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/page/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nimport csvExport from '../../../mixins/csv-export';\n\nimport formReport from '../../collector/report-comp/component';\n\nimport ccReport from '../../../components/cc-report';\n\nThereportController = Ember.Controller.extend(pdfExport, csvExport, {\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    sessionGlobals: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    session: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    checked_rows: [],\n    // contains current values of report filters\n    filterValues: null,\n    rowActions: Ember.computed('intl', function () {\n        var arr;\n        arr = [\n            {\n                action: 'editRow',\n                icon: 'move move-Pencil',\n                text: this.get('intl').t('general.edit'),\n            },\n            {\n                action: 'rowHistory',\n                icon: 'move move-Search',\n                text: this.get('intl').t('report.customer.history'),\n            },\n            {\n                action: 'removeRow',\n                icon: 'move move-Delete',\n                text: this.get('intl').t('report.delete_rows'),\n            },\n        ];\n        return arr;\n    }),\n    isMobile: Em.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null;\n    }),\n    // these field types can be used as filters\n    filterFieldTypes: ['database', 'status', 'dropdown_options', 'dropdown_values', 'multiselect'],\n    allowedMoreFilters: ['user.worktimegroup'],\n    // this needs to be set for filters to work .. we must use filters for SOME form\n    baseForm: Em.computed(function () {\n        if (this.get('Collector').testNeeds(['bill'])) {\n            return 'bill';\n        } else {\n            return 'worktime';\n        }\n    }),\n    settings: Em.computed.alias('model.settings'),\n    pageid: Em.computed.alias('model.pageid'),\n    selectableFilters: Ember.computed('pageid', function () {\n        var c,\n            field,\n            fields,\n            filterFieldTypes,\n            form,\n            i,\n            len,\n            moreFilter,\n            moreFilterArr,\n            name,\n            ref,\n            ref1,\n            ret;\n        c = this.get('Collector');\n        filterFieldTypes = this.get('filterFieldTypes');\n        form = this.get('baseForm');\n        fields = c.fields(form);\n        ret = Em.A([]);\n        for (name in fields) {\n            field = fields[name];\n            if (((ref = field.type), indexOf.call(filterFieldTypes, ref) >= 0)) {\n                ret.pushObject(\n                    Ember.Object.create({\n                        id: name,\n                        name: c.getTranslationForColumn(form, name),\n                    }),\n                );\n            }\n        }\n        if (this.get('allowedMoreFilters')) {\n            ref1 = this.get('allowedMoreFilters');\n            for (i = 0, len = ref1.length; i < len; i++) {\n                moreFilter = ref1[i];\n                moreFilterArr = moreFilter.split('.');\n                if (c.fieldExists(moreFilterArr[0], moreFilterArr[1])) {\n                    ret.pushObject(\n                        Ember.Object.create({\n                            id: moreFilterArr[0] + '.' + moreFilterArr[1],\n                            name: c.getTranslationForColumn(moreFilterArr[0], moreFilterArr[1]),\n                        }),\n                    );\n                }\n            }\n        }\n        return ret;\n    }),\n    refreshQueries: Ember.on(\n        'init',\n        Ember.observer('filterValues', function () {\n            var reports;\n            reports = this.get('reports');\n            return reports.forEach((item) => {\n                return this.refreshReport(item);\n            });\n        }),\n    ),\n    refreshReport: function (report) {\n        var c, fields, filterValues, form, query, showFiltersArr;\n        filterValues = this.get('filterValues');\n        if (!filterValues) {\n            return;\n        }\n        c = this.get('Collector');\n        form = report.get('form');\n        showFiltersArr = this.get('showFilters').split(',');\n        fields = c.fields(form);\n        query = [];\n        $.each(showFiltersArr, (key, item) => {\n            var field_key, i, len, ref, useField, value;\n            if (fields) {\n                ref = Object.keys(fields);\n                for (i = 0, len = ref.length; i < len; i++) {\n                    field_key = ref[i];\n                    if (fields[field_key].options && fields[field_key].options.form === item) {\n                        useField = this.queryDefinitions(form, fields[field_key].ext);\n                        break;\n                    }\n                }\n            }\n            if (!useField) {\n                useField = this.queryDefinitions(form, item);\n            }\n            if (!fields && report.get('type') !== 'cc') {\n                // this means that report is some broken or empty\n                return;\n            }\n            if (report.get('type') !== 'cc' && !(useField in fields) && item.indexOf('.') === -1) {\n                return;\n            }\n            value = filterValues.findBy('name', item).value;\n            if (!value) {\n                return;\n            }\n            return query.pushObject({\n                name: useField,\n                value: value,\n            });\n        });\n        return report.set('query', query);\n    },\n    // list for special definitions for query parameters .. ie. abcenses has startdate not date field\n    queryDefinitions: function (form, field) {\n        if (form === 'abcense' && field === 'date') {\n            return 'startdate';\n        }\n        return field;\n    },\n    saveSettings: function () {\n        var addReport,\n            c,\n            date_field_found,\n            field,\n            field_name,\n            field_obj,\n            form_fields,\n            i,\n            j,\n            k,\n            len,\n            len1,\n            len2,\n            report,\n            report_field,\n            report_fields,\n            reports,\n            save,\n            saveFields,\n            tmp_field;\n        c = this.get('Collector');\n        reports = this.get('reports');\n        saveFields = [\n            'header',\n            'group',\n            'show_columns',\n            'form',\n            'half',\n            'custom',\n            'type',\n            'key',\n            'calendar',\n            'rowsPerPage',\n        ];\n        save = [];\n        for (i = 0, len = reports.length; i < len; i++) {\n            report = reports[i];\n            // this is calendar-report so make sure that date-column is selected\n            if (report['calendar']) {\n                date_field_found = false;\n                if (report['show_columns']) {\n                    report_fields = report['show_columns'].split(',');\n                } else if (report['group']) {\n                    report_fields = report['group'].split(',');\n                }\n                for (j = 0, len1 = report_fields.length; j < len1; j++) {\n                    report_field = report_fields[j];\n                    tmp_field = c.formField(report['form'], report_field);\n                    if (tmp_field && tmp_field['type'] === 'date') {\n                        date_field_found = true;\n                        break;\n                    }\n                }\n                if (!date_field_found) {\n                    // no datefield was found, iterate through form and get first date-field\n                    form_fields = c.fields(report['form']);\n                    for (field_name in form_fields) {\n                        field_obj = form_fields[field_name];\n                        if (field_obj['type'] === 'date') {\n                            if (report['show_columns']) {\n                                Ember.set(\n                                    report,\n                                    'show_columns',\n                                    report['show_columns'] + ',' + field_name,\n                                );\n                            } else if (report['group']) {\n                                Ember.set(report, 'group', report['group'] + ',' + field_name);\n                            }\n                        }\n                    }\n                }\n            }\n            if (this.Collector.fieldExists(report['form'], 'status')) {\n                Ember.set(report, 'canChangeStatus', true);\n            } else {\n                Ember.set(report, 'canChangeStatus', false);\n            }\n            addReport = {};\n            for (k = 0, len2 = saveFields.length; k < len2; k++) {\n                field = saveFields[k];\n                addReport[field] = report.get(field);\n            }\n            save.push(addReport);\n        }\n        return c.ttapi({\n            method: 'post',\n            url: 'comboreport',\n            data: {\n                id: this.get('pageid'),\n                settings: JSON.stringify({\n                    filters: this.get('showFilters'),\n                    reports: save,\n                }),\n            },\n        });\n    },\n    showAddReportButton: Ember.computed('reports.length', function () {\n        if (this.get('reports.length') <= 6 && this.get('session.currentUser.userlevel') !== '1') {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    reports: Ember.computed('settings.reports', function () {\n        var reports, ret;\n        ret = Em.A([]);\n        reports = this.get('settings.reports');\n        if (!reports) {\n            return ret;\n        }\n        $.each(reports, (key, item) => {\n            var field, i, len, ref, showcolumns;\n            item['index'] = key;\n            if (Ember.isPresent(item['form']) && !this.get('Collector').formExists(item['form'])) {\n                item.error_in_report = 'Form ' + item.form + ' does not exist in service';\n            }\n            //check group items\n            if (item['group']) {\n                ref = item['group'].split(',');\n                for (i = 0, len = ref.length; i < len; i++) {\n                    field = ref[i];\n                    if (field === 'all') {\n                        continue;\n                    }\n                    if (this.Collector.fieldExists(item.form, field) === false) {\n                        item.error_in_report = 'missing ' + field + ' in ' + item.form + ' form';\n                    }\n                }\n            }\n            if (item.type === 'cc') {\n                item.hideFullExportLink = true;\n            }\n            showcolumns = item['show_columns'] ? item['show_columns'].split(',') : [];\n            if (!item['group'] && this.Collector.fieldExists(item.form, 'status')) {\n                item.useRowInfo = true;\n            }\n            // we need checkbox on grouped report also\n            if (this.Collector.fieldExists(item.form, 'status')) {\n                item.canChangeStatus = true;\n            }\n            return ret.pushObject(Ember.Object.create(item));\n        });\n        return ret;\n    }),\n    showFilters: 'date,project,user',\n    loadFilters: Ember.observer('settings.filters', function () {\n        var _showFilters, filters, i, len, ref, val;\n        filters = this.get('settings.filters');\n        if (!filters) {\n            return 'date,project,user';\n        }\n        _showFilters = Em.A([]);\n        ref = filters.split(',');\n        for (i = 0, len = ref.length; i < len; i++) {\n            val = ref[i];\n            _showFilters.pushObject(val);\n        }\n        this.set('_showFilters', _showFilters);\n        return this.set('showFilters', filters);\n    }),\n    updateShowFilters: Ember.observer('_showFilters.[]', function () {\n        return this.set(\n            'showFilters',\n            Em.A(['date']).addObjects(this.get('_showFilters')).join(','),\n        );\n    }),\n    // default date-range for calendar\n    dateRange: Em.computed(function () {\n        return (\n            moment().startOf('month').format('YYYY-MM-DD') +\n            '_' +\n            moment().endOf('month').format('YYYY-MM-DD')\n        );\n    }),\n    actions: {\n        fullScreen: function () {\n            this.get('gui').togglefullScreen();\n            return false;\n        },\n        editorOn: function (report) {\n            report.set('editorMode', true);\n            return false;\n        },\n        editorOff: function (report) {\n            report.set('editorMode', false);\n            this.saveSettings();\n            this.refreshReport(report);\n            return false;\n        },\n        editRow: function (row, report) {\n            var record;\n            record = this.get('store').peekRecord(report.get('form'), row.get('id'));\n            record.one('didUpdate', () => {\n                return report.notifyPropertyChange('refreshRows');\n            });\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: [report.get('form'), row.get('id')],\n                },\n            });\n        },\n        addNewReport: function () {\n            return this.get('reports').pushObject(\n                Ember.Object.create({\n                    editorMode: true,\n                }),\n            );\n        },\n        removeReport: function (report) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('thereport.remove'))\n                .then((con) => {\n                    if (con) {\n                        this.get('reports').removeObject(report);\n                        this.refreshReport(report);\n                        this.saveSettings();\n                    }\n                    return false;\n                });\n        },\n        editFilters: function (state) {\n            this.set('editFiltersMode', state);\n            if (state === false) {\n                this.saveSettings();\n            }\n            return false;\n        },\n        cancelEdit: function (report) {\n            report.set('editorMode', false);\n            return false;\n        },\n        export_csv: function (report) {\n            var component, csv_str, promise, self;\n            if (this.get('showLoader')) {\n                return;\n            }\n            this.set('showLoader', true);\n            // pretty much copy & paste code from export_pdf\n            csv_str = [];\n            component = this.createComponent(report);\n            component.set('settings', report);\n            promise = component.get('asCsvArray');\n            self = this;\n            return promise.then((array) => {\n                this.set('showLoader', false);\n                if (!array) {\n                    return;\n                }\n                return this.createCsvFromElements(array, false);\n            });\n        },\n        export_pdf_full: function (report = false) {\n            this.set('full_pdf_export', true);\n            return this.send('export_pdf', report);\n        },\n        export_excel: function (report) {\n            var component, promise;\n            if (this.get('showLoader')) {\n                return;\n            }\n            this.set('showLoader', true);\n            component = this.createComponent(report);\n            component.set('settings', report);\n            promise = component.get('asCsvArray');\n            return promise\n                .then((array) => {\n                    var excelArray;\n                    if (!array) {\n                        return;\n                    }\n                    excelArray = array.map((arr) => {\n                        return arr.map((item) => {\n                            if (typeof item === 'object' && item !== null) {\n                                return item.string;\n                            }\n                            return item;\n                        });\n                    });\n                    return this.get('excel').export(excelArray, 'sheet1', 'export.xlsx');\n                })\n                .finally(() => {\n                    return this.set('showLoader', false);\n                });\n        },\n        export_excel_page: function () {\n            var getReportData, promises, reports;\n            if (this.get('showLoader')) {\n                return;\n            }\n            this.set('showLoader', true);\n            reports = this.get('reports');\n            promises = [];\n            getReportData = (report, index) => {\n                var component, promise;\n                component = this.createComponent(report);\n                component.set('settings', report);\n                promise = component.get('asCsvArray');\n                return promise.then((array) => {\n                    if (!array) {\n                        return;\n                    }\n                    return array.map((arr) => {\n                        return arr.map((item) => {\n                            if (typeof item === 'object' && item !== null) {\n                                return item.string;\n                            }\n                            return item;\n                        });\n                    });\n                });\n            };\n            reports.forEach((report, index) => {\n                return promises.push(getReportData(report, index));\n            });\n            return Ember.RSVP.Promise.all(promises).then((data) => {\n                var excelArray;\n                excelArray = [];\n                data.forEach(function (rep) {\n                    rep.forEach(function (row) {\n                        return excelArray.push(row);\n                    });\n                    excelArray.push([]);\n                    return excelArray.push([]);\n                });\n                this.get('excel').export(excelArray, 'sheet1', 'export.xlsx');\n                return this.set('showLoader', false);\n            });\n        },\n        export_pdf: function (report = false) {\n            var column,\n                component,\n                counter,\n                getReportData,\n                headers,\n                i,\n                len,\n                pdfElements,\n                promises,\n                reports,\n                self;\n            if (this.get('showLoader')) {\n                return;\n            }\n            this.set('showLoader', true);\n            self = this;\n            reports = this.get('reports');\n            // If report is given we just want to export that\n            if (report) {\n                reports = reports.filter(function (rep) {\n                    if (rep.get('header') === report.get('header')) {\n                        //report_index =\n                        return true;\n                    }\n                });\n            }\n            promises = [];\n            pdfElements = Em.A([]);\n            headers = this.createAdditionalPdfHeaders();\n            getReportData = (report, counter, column) => {\n                var promise;\n                if (this.get('full_pdf_export')) {\n                    promise = report.get('asPdfElementFull');\n                    return promise.then(function (element) {\n                        return self.createPdfFromElements([element]);\n                    });\n                } else {\n                    promise = report.get('asPdfElement');\n                    promises.push(promise);\n                    return promise.then((element) => {\n                        var headerElement;\n                        if (!element) {\n                            return;\n                        }\n                        if (report.settings.header) {\n                            headerElement = this.createPdfHeaderElement(report.settings.header);\n                            headerElement.index = counter;\n                            headerElement.column = column;\n                            pdfElements.pushObject(headerElement);\n                        }\n                        element.index = counter + 1;\n                        element.column = column;\n                        return pdfElements.pushObject(element);\n                    });\n                }\n            };\n            column = null;\n            for (counter = i = 0, len = reports.length; i < len; counter = ++i) {\n                report = reports[counter];\n                component = this.createComponent(report);\n                component.set('settings', report);\n                if (report.half) {\n                    column = column === 1 ? 2 : 1;\n                } else {\n                    column = null;\n                }\n                getReportData(component, counter * 2, column);\n            }\n            if (this.get('full_pdf_export')) {\n                // remove property so next export doesn't use this\n                this.set('full_pdf_export', false);\n                this.set('showLoader', false);\n                return;\n            }\n            return Em.RSVP.Promise.all(promises).then(() => {\n                if (this.get('signature')) {\n                    pdfElements.pushObject({\n                        index: Number.MAX_SAFE_INTEGER - 1,\n                        style: 'marginTop',\n                        table: {\n                            widths: ['auto', 140, 30, 'auto', 140],\n                            body: [\n                                [\n                                    {\n                                        border: [false, false, false, false],\n                                        text: this.get('intl').t('report.worktask.signature') + ':',\n                                    },\n                                    {\n                                        border: [false, false, false, true],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: this.get('intl').t('thereport.print_name') + ':',\n                                    },\n                                    {\n                                        border: [false, false, false, true],\n                                        text: '',\n                                    },\n                                ],\n                            ],\n                        },\n                    });\n                }\n                if (this.get('datePlace')) {\n                    pdfElements.pushObject({\n                        index: Number.MAX_SAFE_INTEGER,\n                        style: 'marginTop',\n                        table: {\n                            widths: ['auto', 140, 30, 'auto', 140],\n                            body: [\n                                [\n                                    {\n                                        border: [false, false, false, false],\n                                        text: this.get('intl').t('thereport.date') + ':',\n                                    },\n                                    {\n                                        border: [false, false, false, true],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: this.get('intl').t('thereport.place') + ':',\n                                    },\n                                    {\n                                        border: [false, false, false, true],\n                                        text: '',\n                                    },\n                                ],\n                            ],\n                        },\n                    });\n                }\n                return this.createPdfFromElements(\n                    pdfElements.sortBy('index'),\n                    'download',\n                    headers,\n                ).finally(() => {\n                    return this.set('showLoader', false);\n                });\n            });\n        },\n        addDefaultReport: function (defaultReport) {\n            var header, key, newReport, ref, value;\n            header =\n                'header' in defaultReport.settings\n                    ? defaultReport.settings.header\n                    : defaultReport.name;\n            newReport = Ember.Object.create({\n                custom: true,\n                header: header,\n            });\n            ref = defaultReport.settings;\n            for (key in ref) {\n                value = ref[key];\n                newReport[key] = value;\n            }\n            this.get('reports').pushObject(newReport);\n            return this.saveSettings();\n        },\n        checkedRowsChanged: function (report_index, rows) {\n            return this.set('checked_rows_' + report_index, rows);\n        },\n        removeFieldFromOrder: function (field) {\n            var cols;\n            cols = this.get('settings.order').split(',');\n            if (cols.length === 1) {\n                this.set('settings.order', this.get('settings.defaultOrder'));\n                this.set('manuallyOrdered', false);\n                return;\n            }\n            if (cols.includes(field + '-')) {\n                field = field + '-';\n            }\n            cols.splice(cols.indexOf(field), 1);\n            if (cols.length > 0) {\n                this.set('manuallyOrdered', true);\n                this.set('order', cols.join(','));\n                return this.set('settings.order', cols.join(','));\n            }\n        },\n    },\n    createComponent: function (report) {\n        if (report.type === 'cc') {\n            return ccReport.create({\n                renderer: this,\n                store: this.get('store'),\n                Collector: this.get('Collector'),\n                intl: this.get('intl'),\n                rowsPerPage: 'all',\n                sessionGlobals: this.get('sessionGlobals'),\n                settings: report,\n                key: report.key,\n            });\n        } else {\n            return formReport.create({\n                renderer: this,\n                store: this.get('store'),\n                Collector: this.get('Collector'),\n                intl: this.get('intl'),\n                rowsPerPage: 'all',\n                sessionGlobals: this.get('sessionGlobals'),\n                checked_rows: this.get('checked_rows_' + report.index),\n                settings: report,\n            });\n        }\n    },\n    createAdditionalPdfHeaders: function () {\n        var baseForm, c, field, filter, filterValues, filtername, formName, i, len, rows, tmpFilter;\n        c = this.get('Collector');\n        filterValues = this.get('filterValues');\n        if (!filterValues) {\n            // ugly hack to get empty filters to work in pdf headers\n            filterValues = [\n                {\n                    name: 'date',\n                    value:\n                        moment().startOf('week').format('YYYY-MM-DD') +\n                        '_' +\n                        moment().endOf('week').format('YYYY-MM-DD'),\n                },\n            ];\n        }\n        rows = [];\n        baseForm = this.get('baseForm');\n        for (i = 0, len = filterValues.length; i < len; i++) {\n            filter = filterValues[i];\n            if (!filter.value) {\n                continue;\n            }\n            if (filter.name.indexOf('.') > -1) {\n                tmpFilter = filter.name.split('.');\n                formName = tmpFilter[0];\n                filtername = tmpFilter[1];\n            } else {\n                formName = baseForm;\n                filtername = filter.name;\n            }\n            field = c.field(formName, filtername);\n            if (\n                field.type === 'database' &&\n                Ember.typeOf(filter.value) === 'string' &&\n                !isNaN(filter.value)\n            ) {\n                filter.value = parseInt(filter.value);\n            }\n            rows.push(\n                c.getTranslationForColumn(formName, filtername) +\n                    ': ' +\n                    c._format_(filter.value, formName, filtername, 'pdf'),\n            );\n        }\n        return rows.join('\\n');\n    },\n    defaultReports: Ember.computed(function () {\n        var c, intl, promise;\n        intl = this.get('intl');\n        c = this.get('Collector');\n        promise = c.ttapi({\n            url: 'defaultReports',\n        });\n        promise.then((data) => {\n            var i, key, len, report;\n            for (key = i = 0, len = data.length; i < len; key = ++i) {\n                report = data[key];\n                if ('translatedName' in report) {\n                    data[key].name = intl.t(report.translatedName);\n                }\n            }\n            data = c.needsOfArray(data);\n            return this.set('defaultReports', data);\n        });\n        return null;\n    }),\n});\n\nexport default ThereportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/page/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportRoute;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nThereportRoute = Ember.Route.extend({\n    model: function (params) {\n        var pages;\n        pages = this.modelFor('thereport');\n        return new Ember.RSVP.hash({\n            settings: params.page in pages ? pages[params.page].settings : [],\n            pageid: params.page in pages ? pages[params.page].id : null,\n        });\n    },\n    actions: {\n        didTransition: function () {\n            return Ember.run.schedule('afterRender', this, function () {\n                $('.dropdown-toggler').on('click', function (event) {\n                    $('input.checkbox-button').prop('checked', false);\n                    return $(this).parent().toggleClass('open');\n                });\n                return $('body').on('click', function (e) {\n                    if (\n                        !$('.dropdown-toggler').is(e.target) &&\n                        $('.dropdown-menu').has(e.target).length === 0 &&\n                        $('.open').has(e.target).length === 0\n                    ) {\n                        $('input.checkbox-button').prop('checked', false);\n                        return $('div.dropdown').removeClass('open');\n                    }\n                });\n            });\n        },\n    },\n});\n\nexport default ThereportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"qK2odIhw\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\",\\\"defaultReport\\\",\\\"report\\\",\\\"idx\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-10\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editFiltersMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"multi-buttons\\\",[[24,[\\\"multi-buttons\\\"]]],[[\\\"content\\\",\\\"values\\\"],[[24,[\\\"selectableFilters\\\"]],[24,[\\\"_showFilters\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\"],[[24,[\\\"showFilters\\\"]],[24,[\\\"baseForm\\\"]],[24,[\\\"filterValues\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"editFiltersMode\\\"]]],null],[28,\\\"has-permission\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],[24,[\\\"settings\\\",\\\"userlevels\\\",\\\"edit\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editFilters\\\",true]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-pencil\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"editFiltersMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editFilters\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dropdown btn-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"btn btn-default dropdown-toggler\\\"],[10,\\\"role\\\",\\\"button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu dropdown-menu-right\\\"],[10,\\\"role\\\",\\\"menu\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"checkbox-margins\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"signature\\\"]],\\\"sig\\\"]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"sig\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"report.worktask.signature\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"checkbox-margins\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"datePlace\\\"]],\\\"dateplace\\\"]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"dateplace\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"thereport.date_and_place\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"divider\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_excel_page\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"report-main-zoomed\\\"],null],\\\" report-main-content report-thereport\\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"reports\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"unless\\\",[[23,4,[\\\"editorMode\\\"]],[23,4,[\\\"half\\\"]]],null],\\\"col-sm-6\\\",\\\"col-sm-12\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-10 col-xs-5\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"header\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"h3\\\",true],[8],[1,[23,4,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-2 col-xs-7 text-right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,4,[\\\"editorMode\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"has-permission\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],[24,[\\\"settings\\\",\\\"userlevels\\\",\\\"edit\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editorOn\\\",[23,4,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-pencil\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\",[23,4,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dropdown btn-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"a\\\",true],[10,\\\"role\\\",\\\"button\\\"],[10,\\\"class\\\",\\\"btn btn-default dropdown-toggler\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu dropdown dropdown-menu-right\\\"],[10,\\\"role\\\",\\\"menu\\\"],[10,\\\"aria-labelledby\\\",\\\"dropdownMenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_excel\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-submenu\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"input\\\",true],[11,\\\"id\\\",[29,[[28,\\\"concat\\\",[[23,5,[]],\\\"-toggle\\\"],null]]]],[10,\\\"class\\\",\\\"checkbox-button\\\"],[10,\\\"href\\\",\\\"javascript:void(0)\\\"],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[23,5,[]],\\\"-toggle\\\"],null]]]],[10,\\\"class\\\",\\\"label-checkbox\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"checkbox-margins\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"signature\\\"]],[28,\\\"concat\\\",[[23,5,[]],\\\"-signature\\\"],null]]]],false],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[23,5,[]],\\\"-signature\\\"],null]]]],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"t\\\",[\\\"report.worktask.signature\\\"],null],false],[0,\\\"\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"checkbox-margins\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"datePlace\\\"]],[28,\\\"concat\\\",[[23,5,[]],\\\"-dateplace\\\"],null]]]],false],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[23,5,[]],\\\"-dateplace\\\"],null]]]],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"t\\\",[\\\"thereport.date_and_place\\\"],null],false],[0,\\\"\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"divider\\\"],[8],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,4,[\\\"hideFullExportLink\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf_full\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf_full\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"editorMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"thereport/form-reporteditor\\\",null,[[\\\"settings\\\",\\\"save\\\",\\\"remove\\\",\\\"cancel\\\"],[[23,4,[]],[28,\\\"action\\\",[[23,0,[]],\\\"editorOff\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeReport\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"cancelEdit\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"error_in_report\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-exclamation-sign\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"comboreport.error_in_report\\\"],null],false],[0,\\\" (\\\"],[1,[23,4,[\\\"error_in_report\\\"]],false],[0,\\\")\\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"type\\\"]],\\\"cc\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"cc-report\\\",null,[[\\\"settings\\\"],[[23,4,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"group\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"action\\\",\\\"useSpecialQueryParams\\\",\\\"checkedRowsChanged\\\",\\\"rowActions\\\",\\\"checkable\\\",\\\"hideCheckedActions\\\"],[[23,4,[]],\\\"editorOn\\\",true,[28,\\\"action\\\",[[23,0,[]],\\\"checkedRowsChanged\\\",[23,4,[\\\"index\\\"]]],null],false,false,true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"action\\\",\\\"useSpecialQueryParams\\\",\\\"checkedRowsChanged\\\",\\\"rowActions\\\",\\\"editRow\\\",\\\"checkable\\\"],[[23,4,[]],\\\"editorOn\\\",true,[28,\\\"action\\\",[[23,0,[]],\\\"checkedRowsChanged\\\",[23,4,[\\\"index\\\"]]],null],[24,[\\\"rowActions\\\"]],\\\"editRow\\\",[23,4,[\\\"canChangeStatus\\\"]]]]],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4,5]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"has-permission\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],[24,[\\\"settings\\\",\\\"userlevels\\\",\\\"edit\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showAddReportButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group dropup\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNewReport\\\"]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.add_report\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"defaultReports\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,1,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"btn-primary dropdown-toggle\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"sr-only\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.thereport.toggle_dropdown\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"defaultReports\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"addDefaultReport\\\",[23,3,[]]]],[8],[1,[23,3,[\\\"name\\\"]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/thereport/page/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nThereportRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    model: function (params) {\n        var c, report_prefix;\n        c = this.get('Collector');\n        report_prefix = this.get('intl').t('thereport.report_prefix');\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            promise = c.ttapi({\n                url: 'comboreports',\n            });\n            return promise.then((data) => {\n                data.forEach((item, index) => {\n                    if (!item.name) {\n                        return (item.name = report_prefix + ' ' + (index + 1));\n                    }\n                });\n                while (data.length < 4) {\n                    data.pushObject({\n                        name: report_prefix + ' ' + (data.length + 1),\n                    });\n                }\n                return resolve(data);\n            });\n        });\n    },\n    redirect: function (model, transition) {\n        if (transition.targetName === 'thereport.index') {\n            return this.transitionTo('thereport.page', 0);\n        }\n    },\n    actions: {\n        willTransition: function () {\n            return this.refresh();\n        },\n        reload: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default ThereportRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/settings/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportSettingsController;\n\nimport Ember from 'ember';\n\nThereportSettingsController = Ember.Controller.extend({\n    parent: Em.inject.controller('thereport'),\n    dialogs: Em.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    reports: Em.computed.alias('parent.model'),\n    _reports: Em.computed('reports', function () {}),\n    allInUse: Em.computed('reports', function () {\n        var allInUse;\n        allInUse = true;\n        if (this.get('session.currentUser.userlevel') === '1') {\n            //hide \"Add report\" from settings page for worker if worker has been given edit permissions for some report...\n            allInUse = false;\n        }\n        this.get('model').forEach(function (item) {\n            if (!item.id) {\n                return (allInUse = false);\n            }\n        });\n        return allInUse;\n    }),\n    _userlevels: Em.computed('currentReport', function () {\n        var c, lvls;\n        c = this.get('Collector');\n        lvls = c.getUserlevels([]);\n        return lvls;\n    }),\n    onlyIcanSee: Em.computed('currentReport', function () {\n        if (this.get('currentReport.id')) {\n            if (this.get('currentReport.settings.only_creator_can_see')) {\n                return true;\n            }\n        }\n        return false;\n    }),\n    createdByCurrentuser: Em.computed('currentReport', function () {\n        if (this.get('currentReport.created_by_currentuser') === true) {\n            return true;\n        }\n        return false;\n    }),\n    userlevels: Em.computed('_userlevels', function () {\n        var i, len, lvl, lvls, savedUserlevels, tmp_lvls;\n        tmp_lvls = this.get('_userlevels');\n        savedUserlevels = this.get('currentReport.settings.userlevels');\n        if (this.get('session.currentUser.userlevel') !== '5') {\n            lvls = tmp_lvls.filter((lvl) => {\n                if (lvl['id'] === '5') {\n                    return false;\n                } else {\n                    return true;\n                }\n            });\n        } else {\n            lvls = tmp_lvls;\n        }\n        for (i = 0, len = lvls.length; i < len; i++) {\n            lvl = lvls[i];\n            if (\n                (savedUserlevels && savedUserlevels['view'].indexOf(parseInt(lvl['id'])) > -1) ||\n                lvl['id'] === this.get('session.currentUser.userlevel')\n            ) {\n                //console.log \"userlevel \"+lvl['id']+\" has view permission\"\n                lvl['view'] = true;\n            }\n            if (\n                (savedUserlevels && savedUserlevels['edit'].indexOf(parseInt(lvl['id'])) > -1) ||\n                lvl['id'] === this.get('session.currentUser.userlevel')\n            ) {\n                //console.log \"userlevel \"+lvl['id']+\" has edit permission\"\n                lvl['edit'] = true;\n            }\n        }\n        return lvls;\n    }),\n    actions: {\n        saveComboSettings: function () {\n            var editPermissions, i, len, lvl, ref, report, viewPermissions;\n            report = this.get('currentReport');\n            viewPermissions = [];\n            editPermissions = [];\n            ref = this.get('userlevels');\n            for (i = 0, len = ref.length; i < len; i++) {\n                lvl = ref[i];\n                if (lvl['edit']) {\n                    editPermissions.push(parseInt(lvl['id']));\n                }\n                if (lvl['view']) {\n                    viewPermissions.push(parseInt(lvl['id']));\n                }\n            }\n            if (this.get('onlyIcanSee')) {\n                Em.set(report, 'settings.only_creator_can_see', true);\n            } else {\n                delete report['settings']['only_creator_can_see'];\n                //Em.set report,'settings.userid', null\n                if (viewPermissions.length > 0 && editPermissions.length > 0) {\n                    // if this is not personal report-page, set permissions\n                    // also set permissions only if user has checked some boxes\n                    // ALSO admin has always permissions to edit & view\n                    if (viewPermissions.indexOf(5) === -1) {\n                        viewPermissions.push(5);\n                    }\n                    if (editPermissions.indexOf(5) === -1) {\n                        editPermissions.push(5);\n                    }\n                    Em.set(report, 'settings.userlevels', {\n                        view: viewPermissions,\n                        edit: editPermissions,\n                    });\n                } else {\n                    delete report['settings']['userlevels'];\n                }\n            }\n            this.get('parent').saveReport(report['id'], report['name'], report['settings']);\n            this.set('showComboDialog', false);\n            return this.get('parent').send('reload');\n        },\n        edit: function (report) {\n            this.set('currentReport', report);\n            if (\n                this.get('currentReport.settings.userid') &&\n                parseInt(this.get('currentReport.settings.userid')) ===\n                    parseInt(this.get('session.currentUser.id'))\n            ) {\n                this.set('ownReportPage', true);\n            }\n            this.set('showComboDialog', true);\n            return false;\n        },\n        rename: function (report) {\n            var promise;\n            promise = this.get('dialogs').prompt(\n                this.get('intl').t('thereport.report_name'),\n                report.name,\n            );\n            return promise.then((val) => {\n                if (val !== false) {\n                    return this.get('parent')\n                        .saveReport(report.id, val)\n                        .then(() => {\n                            return this.get('parent').send('reload');\n                        });\n                }\n            });\n        },\n        addNew: function () {\n            this.set('ownReportPage', true);\n            this.set(\n                'currentReport',\n                Em.Object.create({\n                    settings: {\n                        userid: this.get('session.currentUser.id'),\n                    },\n                    created_by_currentuser: true,\n                }),\n            );\n            this.set('showComboDialog', true);\n            //@set 'currentReport', report\n            return false;\n        },\n        /*\n    promise = @get('dialogs').prompt @get('intl').t \"thereport.report_new_name\"\n\n    promise.then (val) =>\n        if val isnt false\n            @get('parent').saveReport(null, val).then =>\n                @get('parent').send 'reload'\n\n    */\n        remove: function (report) {\n            var promise;\n            promise = this.get('dialogs').confirm(this.get('intl').t('thereport.remove'));\n            return promise.then((val) => {\n                if (val === true) {\n                    return this.get('parent')\n                        .removeReport(report.id)\n                        .then(() => {\n                            return this.get('parent').send('reload');\n                        });\n                }\n            });\n        },\n        removeModal: function () {\n            return this.set('showComboDialog', false);\n        },\n    },\n});\n\nexport default ThereportSettingsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/settings/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportSettingsRoute;\n\nimport Ember from 'ember';\n\nThereportSettingsRoute = Ember.Route.extend();\n\nexport default ThereportSettingsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9WJUTJvS\",\"block\":\"{\\\"symbols\\\":[\\\"userlevel\\\",\\\"rep\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"reports\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n        \\\"],[2,\\\"div class=\\\\\\\"input-group-btn\\\\\\\">\\\\n            <div class=\\\\\\\"btn-group-vertical\\\\\\\" role=\\\\\\\"group\\\\\\\" aria-label=\\\\\\\"...\\\\\\\">\\\\n                <button class=\\\\\\\"btn btn-m-default\\\\\\\" data-ember-action=\\\\\\\"1875\\\\\\\"><span class=\\\\\\\"move move-SortUp\\\\\\\"></span></button>\\\\n                <button class=\\\\\\\"btn btn-m-default\\\\\\\" data-ember-action=\\\\\\\"1876\\\\\\\"><span class=\\\\\\\"move move-SortDown\\\\\\\"></span></button>\\\\n            </div>\\\\n        </div\\\"],[0,\\\"\\\\n        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item form-editor-field  \\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-btn form-editor\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group-vertical\\\"],[10,\\\"role\\\",\\\"group\\\"],[10,\\\"aria-label\\\",\\\"...\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"has-permission\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],[23,2,[\\\"settings\\\",\\\"userlevels\\\",\\\"edit\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"edit\\\",[23,2,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,2,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showComboDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"thereport.edit_page\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"thereport.report_name\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"currentReport\\\",\\\"name\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"thereport.permissions\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"createdByCurrentuser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"thereport.only_i_can_see\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"onlyIcanSee\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"onlyIcanSee\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"thereport.can_edit\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"thereport.can_view\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.userlevel\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"userlevels\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"disabled\\\",\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]]],null],true],null],\\\"checkbox\\\",[23,1,[\\\"edit\\\"]],\\\"form-control add-fields\\\"]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"disabled\\\",\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]]],null],true],null],\\\"checkbox\\\",[23,1,[\\\"view\\\"]],\\\"form-control add-fields\\\"]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"thereport.cannot_hide_own_report\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"name\\\",\\\"save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveComboSettings\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"allInUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"]],[8],[1,[28,\\\"t\\\",[\\\"thereport.add_report_page\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/thereport/settings/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"nxPLqLND\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"class\\\",\\\"tagName\\\"],[[23,1,[\\\"link\\\"]],\\\"submenu-item\\\",\\\"div\\\"]],{\\\"statements\\\":[[1,[23,1,[\\\"text\\\"]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/thereport/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerAddController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nTimetrackerAddController = GeneralAddController.extend({\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    flags: Ember.inject.service(),\n    useFormAdd: Ember.computed(function () {\n        return (\n            this.get('flags').test('form-add') ||\n            this.get('flags').test('ember-movenium-form-add-worktime')\n        );\n    }),\n    useNewVersion: Ember.computed(function () {\n        return (\n            this.get('Collector').testNeeds(['products.multitasking']) ||\n            this.get('flags').test('form-add') ||\n            this.get('flags').test('ember-movenium-form-add-worktime')\n        );\n    }),\n    init: function () {\n        var cust, fields;\n        this._super();\n        fields = collector.getFormObjects('worktime');\n        cust = {};\n        if (\n            !fields.starttime.features.hide &&\n            !fields.endtime.features.hide &&\n            !fields.work_hours.features.mandatory\n        ) {\n            cust = {\n                starttime: {\n                    defaultValue: '07:00',\n                },\n                endtime: {\n                    defaultValue: moment().format('HH:mm'),\n                },\n                date: {\n                    defaultValue: moment().format('YYYY-MM-DD'),\n                },\n                pause: {\n                    minValue: 0,\n                },\n            };\n            this.set('customization', cust);\n        }\n        if (fields.starttime.features.hide && fields.endtime.features.hide) {\n            cust = {\n                date: {\n                    defaultValue: moment().format('YYYY-MM-DD'),\n                },\n            };\n            this.set('customization', cust);\n        }\n        // IF SERVICE THROWS ERROR HERE ABOUT \"Can't set project of undefined\" THEN THE SERVICE IS B-R-O-K-E-N\n        // Don't fix this code, rather check what is wrong with the service, usually work_hours is set to mandatory\n        // when using clockcard or something else\n        // It pretty much means that the above two ifs didn't trigger so something wrong with the fields starttime, endtime or work_hours\n        //if collector.getFormObject(\"project.force_location\") && @get('session.currentUser.userlevel') != \"5\"\n        //    cust = @get \"customization\"\n        //    cust.project =\n        //        template: \"timetracker/add/gpsprojects\"\n        //else\n        cust = this.get('customization');\n        cust.project = {\n            template: 'timetracker/add/project',\n        };\n        if (this.get('Collector').testNeedsOne('products.timetracker_km_automatic')) {\n            return (cust.km = {\n                template: 'timetracker/add/km_auto',\n            });\n        }\n    },\n    addNewLink: 'timetracker.add',\n    editNewLink: 'timetracker.edit',\n    date_newer_warning: false,\n    getStarttime: function () {\n        // get starttime by using magic aka fuzzy logic\n        return this.get('Collector').ttapi({\n            method: 'get',\n            dataType: 'text',\n            url: 'get_starttime',\n        });\n    },\n    model_observer: Em.observer('model', function () {\n        var fields, records;\n        if (this.get('useNewVersion')) {\n            return;\n        }\n        fields = collector.getFormObjects('worktime');\n        if (this.get('session.currentUser.currentMySite')) {\n            this.set('model.project', this.get('session.currentUser.currentMySite'));\n        }\n        if (\n            !fields.starttime.features.hide &&\n            !fields.endtime.features.hide &&\n            !fields.work_hours.features.mandatory &&\n            this.get('model.isNew') &&\n            !this.get('model.starttime')\n        ) {\n            records = this.store\n                .peekAll('worktime')\n                .filterBy('date', moment().format('YYYY-MM-DD'))\n                .sortBy('endtime');\n            if (records.get('lastObject.endtime')) {\n                return this.set('model.starttime', records.get('lastObject.endtime'));\n            } else {\n                return this.getStarttime().then((start) => {\n                    if (start) {\n                        return this.set('model.starttime', start);\n                    }\n                });\n            }\n        }\n    }),\n    date_observer: Em.observer('model.date', function () {\n        var date, next_month_date, selected_date;\n        if (this.get('useNewVersion')) {\n            return;\n        }\n        date = this.get('model.date');\n        if (date == null) {\n            return;\n        }\n        if (!moment(new Date(date)).isValid()) {\n            return;\n        }\n        selected_date = moment(new Date(date)).format('YYYY-MM-DD');\n        next_month_date = moment().add(1, 'months').format('YYYY-MM-DD');\n        if (selected_date > next_month_date) {\n            return this.set('date_newer_warning', true);\n        } else {\n            return this.set('date_newer_warning', false);\n        }\n    }),\n    actions: {\n        goBack: () => {\n            return window.history.back(-1);\n        },\n    },\n});\n\nexport default TimetrackerAddController;\n","export default Ember.HTMLBars.template({\"id\":\"rparQZTA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"gps-forced-dropdown\\\",null,[[\\\"model\\\",\\\"custom_projects\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"model\\\"]],[24,[\\\"custom_projects\\\"]],\\\"changeValue\\\",\\\"form-control add-fields\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/add/gpsprojects/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Ok/24ZQk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"gps-auto-km\\\",null,[[\\\"model\\\",\\\"field\\\",\\\"classes\\\"],[[24,[\\\"model\\\"]],[24,[\\\"fieldRoute\\\"]],\\\"form-control add-fields\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/add/km_auto/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"foq9ZkN9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"project-help\\\",null,[[\\\"projectid\\\"],[[24,[\\\"model\\\",\\\"project\\\",\\\"id\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/add/project/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nimport config from '../../../config/environment';\n\nTimetrackerAddRoute = GeneralAddRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    modelName: 'worktime',\n    controllerName: 'timetracker/add',\n    afterSave: Em.computed(function () {\n        if (this.get('Collector').testNeeds(['mobileView', 'userlevel=1'])) {\n            return 'timetracker.week-report';\n        } else {\n            return 'timetracker.worktime-list';\n        }\n    }),\n    savedRoute: 'timetracker.addsaved',\n    rowSaved: function (row) {\n        var project, user;\n        // save worktime adding to ttapi\n        this.get('ttapi').request('/worktimeAdded', {\n            method: 'post',\n            data: {\n                username: row.get('user.username'),\n                userid: row.get('user.id'),\n                starttime: row.get('starttime'),\n                date: row.get('date'),\n            },\n        });\n        // Alert for missing orientation or outdated pass\n        if (\n            this.get('Collector').testNeedsOne('modules.orientations') &&\n            this.get('session.currentUser.userlevel') === '1' &&\n            !this.get('session.currentUser.no_orientation')\n        ) {\n            project = row.get('project.id');\n            if (this.get('Collector').testNeedsOne('products.rakentajanpaketti')) {\n                if (row.get('project.proj_type') === '2' || row.get('project.proj_type') === null) {\n                    return;\n                }\n            }\n            user = row.get('user.id');\n            return this.get('store')\n                .query('orientation', {\n                    ori_site: project,\n                    ori_user: user,\n                    limit: 1,\n                })\n                .then((data) => {\n                    if (\n                        this.get('Collector').testNeedsOne('products.orientations_self') &&\n                        data.get('meta.count') === 0\n                    ) {\n                        return this.get('dialogs')\n                            .alert(\n                                this.get('intl').t(\n                                    'worktime.after_save.orientation.self_orientation',\n                                ),\n                            )\n                            .then(() => {\n                                return this.transitionTo(\n                                    'orientations.own-orientation',\n                                    row.get('project.id'),\n                                );\n                            });\n                    } else if (data.get('meta.count') === 0) {\n                        if (this.flags.test('disable-worktime-orientations-missing-warning')) {\n                            return;\n                        }\n                        \n                        return this.get('dialogs').alert(\n                            this.get('intl').t('worktime.after_save.orientation.not_found'),\n                        );\n                    } else if (\n                        data.get('firstObject.pass_end') &&\n                        moment().isAfter(moment(data.get('firstObject.pass_end')))\n                    ) {\n                        return this.get('dialogs').alert(\n                            this.get('intl').t('worktime.after_save.orientation.outdated'),\n                        );\n                    }\n                });\n        }\n    },\n    actions: {\n        afterSave: function (settings, record) {\n            return this.transitionTo('timetracker.addsaved').then((newRoute) => {\n                newRoute.controller.set('model', record);\n                newRoute.controller.set('afterSave', this.get('afterSave'));\n                newRoute.controller.set('addPageLink', this.get('controller.addNewLink'));\n                return newRoute.controller.set('editPageLink', this.get('controller.editNewLink'));\n            });\n        },\n        cancelClicked: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.confirm.cancel'))\n                .then((con) => {\n                    if (con) {\n                        this.get('controller.model').rollbackAttributes();\n                        return window.history.back(-1);\n                    }\n                });\n        },\n    },\n});\n\nexport default TimetrackerAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"27qSG9y0\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"useNewVersion\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"gps-icon\\\",null,[[\\\"position\\\"],[\\\"left\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"header.path.add.worktime\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"timetracker.week-report\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"useFormAdd\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add/forms/worktime\\\",null,[[\\\"close\\\",\\\"showSaved\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"goBack\\\"],null],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/add-modal/worktime\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[\\\"worktime\\\",[24,[\\\"model\\\"]],\\\"new\\\",\\\"cancelClicked\\\",\\\"afterSave\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"date_newer_warning\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"timetracker.add_date_for_future_warning\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/addsaved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerAddSavedController;\n\nimport Ember from 'ember';\n\nimport savedController from '../../../controllers/saved';\n\nTimetrackerAddSavedController = savedController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    customerSettings: Ember.inject.service(),\n    session: Ember.inject.service(),\n    showSelfOrientationLink: Em.computed('model.project.id', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                if (\n                    this.get('customerSettings').checkSetting('self_orientation') &&\n                    !this.get('model.user.no_orientation') &&\n                    parseInt(this.get('session.currentUser.userlevel')) === 1\n                ) {\n                    return this.get('store')\n                        .query('orientation', {\n                            ori_user: this.get('model.user.id'),\n                            ori_site: this.get('model.project.id'),\n                        })\n                        .then((orientations) => {\n                            if (orientations.get('meta.count') === 0) {\n                                return resolve(true);\n                            } else {\n                                return resolve(false);\n                            }\n                        });\n                } else {\n                    return resolve(false);\n                }\n            }),\n        });\n    }),\n    currentSaldo: Ember.computed('model', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('Collector')\n                    .ttapi({\n                        url: 'saldo/get_saldo?userid=' + this.get('model.user.id'),\n                    })\n                    .then((back) => {\n                        return resolve({\n                            value: back['saldo'] / 60,\n                            from: back['from'],\n                            to: back['to'],\n                        });\n                    });\n            }),\n        });\n    }),\n});\n\nexport default TimetrackerAddSavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/addsaved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerAddSavedRoute;\n\nimport Ember from 'ember';\n\nimport SavedRoute from '../../../routes/saved';\n\nTimetrackerAddSavedRoute = SavedRoute.extend({\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.notifyPropertyChange('currentSaldo');\n    },\n});\n\nexport default TimetrackerAddSavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9Kt9hjP3\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/saved\\\",[]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.your_saldo_now\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentSaldo\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"currentSaldo\\\",\\\"value\\\"]]],null],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/addsaved/template.hbs\"}});","import { alias } from '@ember/object/computed';\nimport EmberPromise, { hash } from 'rsvp';\nimport Controller from '@ember/controller';\nimport EmberObject, { get, set, computed } from '@ember/object';\nimport { A } from '@ember/array';\nimport { typeOf } from '@ember/utils';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    Collector: service('collector-service'),\n    dialogs: service(),\n    intl: service(),\n    analytics: service(),\n    store: service(),\n    capi: service(),\n    ttapi: service(),\n    error: service(),\n    form: 'worktime',\n    user: null,\n    employer: null,\n\n    init() {\n        this._super(...arguments);\n        this.queryParams = ['user', 'date', 'status', 'project', 'employer'];\n        this.shownColumns = ['project', 'starttime', 'endtime', 'work_hours', 'task'];\n        this.absenceColorFrom = ['abcensetype.id', 'user.firstname', 'user.lastname'];\n        this.worktimeFields = ['work_hours'];\n        this.absenceFields = ['hours'];\n    },\n\n    dailyWorktimeSums: alias('model.dailyWorktimeSums.content'),\n    worktimeSums: alias('model.worktimeSums.content'),\n    absences: alias('model.absences.abcenses'),\n    absenceTypes: alias('model.absences.abcensetypes'),\n    settings: EmberObject.create({\n        massedit: true,\n        hideExports: true,\n        rowSettings: EmberObject.create({\n            editRoute: 'timetracker.edit',\n            historyRoute: 'timetracker.history',\n        }),\n    }),\n    absence_settings: EmberObject.create({\n        massedit: true,\n        hideExports: true,\n        rowSettings: EmberObject.create({\n            editRoute: 'abcenses.edit',\n            historyRoute: 'abcenses.history',\n        }),\n    }),\n    filters: computed('status', 'user', 'date', function () {\n        const c = get(this, 'Collector');\n\n        let fields = c.fieldArray('worktime', ['date', 'user', 'status', 'project', 'employer']);\n\n        // https://jira.visma.com/browse/SUP-3159 can't filter by worktimes as box users don't show then\n        // if (c.testNeeds(['user.module_controls'])) {\n        //     fields.findBy('name', 'user').filterOptions = {module_controls: \"worktimes\"}\n        // }\n        const filters = A([]);\n        fields.forEach((field) => {\n            let filter = EmberObject.create({...field, value: get(this, get(field, 'name')), field: field.name});\n            filters.pushObject(filter);\n        });\n\n        return filters;\n    }),\n\n    showWarning: computed('dailyWorktimeSums', 'absences', function () {\n        if (get(this, 'dailyWorktimeSums.length') >= 100 || get(this, 'absences.length') >= 100) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n\n    statusTypes: computed('form', function () {\n        if (!get(this, 'form')) {\n            return [];\n        }\n        const c = get(this, 'Collector');\n        const intl = get(this, 'intl');\n        const field = c.field(get(this, 'form'), 'status');\n        let options = [];\n        field.options.forEach((option) => {\n            options.push(\n                intl.exists('status.' + option)\n                    ? {\n                          id: option,\n                          name: intl.t('calendar.' + option + '_all_rows'),\n                      }\n                    : { id: option, name: intl.t('calendar.change_status') + option },\n            );\n        });\n        return options;\n    }),\n\n    actions: {\n        addNew(day, type) {\n            window.scrollTo(0, 0);\n            let params = {};\n            if (type == 'abcense') {\n                params.startdate = day;\n                params.enddate = day;\n            } else {\n                params.date = day;\n            }\n\n            if (get(this, 'user')) {\n                params.user = get(this, 'store').peekRecord('user', get(this, 'user'));\n            }\n            if (get(this, 'project')) {\n                params.project = get(this, 'store').peekRecord('project', get(this, 'project'));\n            }\n            const record = get(this, 'store').createRecord(type, params);\n\n            ['didDelete', 'didCreate', 'didUpdate'].forEach((eventName) => {\n                record.on(eventName, () => {\n                    this.send('refreshModel', record);\n                });\n            });\n\n            this.transitionToRoute({ queryParams: { modal: [type, 'new'] } });\n        },\n        openEditor(row) {\n            if (get(row, 'row_info.privilege_remove') != undefined && !get(row, 'isEditable')) {\n                return;\n            }\n            window.scrollTo(0, 0);\n            row.on('didUpdate', () => {\n                this.send('refreshModel', row);\n            });\n            this.transitionToRoute({\n                queryParams: { modal: [get(row, 'constructor.modelName'), get(row, 'id')] },\n            });\n        },\n        remove(record) {\n            get(this, 'dialogs')\n                .confirm(get(this, 'intl').t('general.remove_row'))\n                .then((con) => this._removeRecord(con, record));\n        },\n\n        filterChanged(value, field) {\n            if (['object', 'instance'].includes(typeOf(value))) {\n                value = get(value, 'id');\n            }\n            if (!field) {\n                set(this, 'date', value);\n            } else {\n                set(this, field, value);\n            }\n        },\n\n        showRows(date) {\n            this.transitionToRoute('timetracker.aggregated.rows', date);\n        },\n\n        showAllRows() {\n            this.toggleProperty('showAllRows');\n            if (get(this, 'showAllRows')) {\n                this.transitionToRoute('timetracker.aggregated.rows', 'all');\n            } else {\n                this.transitionToRoute('timetracker.aggregated');\n            }\n        },\n\n        print() {\n            get(this, 'analytics').trackEvent({\n                category: 'Aggregated report',\n                action: 'Print report',\n            });\n            print();\n        },\n\n        async printAll() {\n            get(this, 'analytics').trackEvent({\n                category: 'Aggregated report',\n                action: 'Print all data',\n            });\n            if (get(this, 'showAllRows')) {\n                this.transitionToRoute('timetracker.aggregated');\n                set(this, 'showAllRowsByUser', true);\n            } else {\n                set(this, 'showAllRowsByUser', false);\n            }\n            set(this, 'printLoading', true);\n\n            this.Collector.ajax({\n                url:\n                    'system/clear_memcache?partnerid=' +\n                    get(this, 'session.currentUser.partnerid') +\n                    '&username=' +\n                    get(this, 'session.currentUser.username'),\n            });\n            let users = await this.store.query('user', { limit: 'all' });\n            let mappedData = [];\n\n            mappedData = users.map(async (user) => {\n                try {\n                    return hash({\n                        user: user,\n                        dailyWorktimeSums: await this.capi.findAll('worktime', {\n                            user: user.id,\n                            date: get(this, 'date'),\n                            groupBy: 'date',\n                            status: this.status,\n                        }),\n                        absences: await this.ttapi._get('/api/absences/splitted', {\n                            user: user.id,\n                            status: this.status,\n                            startdate: get(this, 'date').split('_')[0],\n                            enddate: get(this, 'date').split('_')[1],\n                            sideload: this.Collector.getSideloads('abcense'),\n                            raw: true,\n                        }),\n                        worktimeSums: await this.capi.findAll('worktime', {\n                            user: user.id,\n                            date: get(this, 'date'),\n                            groupBy: 'user',\n                            status: this.status,\n                        }),\n                        rows: hash({\n                            worktimeRows: this.showAllRowsByUser\n                                ? get(this, 'store').query('worktime', {\n                                      user: user.id,\n                                      date: get(this, 'date'),\n                                      status: this.status,\n                                  })\n                                : [],\n                            absenceRows: this.showAllRowsByUser\n                                ? get(this, 'store').query('abcense', {\n                                      user: user.id,\n                                      startdate: get(this, 'date'),\n                                      status: this.status,\n                                  })\n                                : [],\n                        }),\n                    });\n                } catch (e) {\n                    this.error.notify(e);\n                    set(this, 'printLoading', false);\n                    return [];\n                }\n            });\n\n            let data = await EmberPromise.all(mappedData);\n            await set(this, 'printableData', data);\n            set(this, 'printLoading', false);\n            await this.printableData;\n            print();\n            set(this, 'printableData', []);\n        },\n\n        setRowsPerPage(form, limit) {\n            set(this, form + '_page', 1);\n            set(this, form + '_limit', limit);\n        },\n    },\n    _removerecord(con, record) {\n        if (con) {\n            record.destroyRecord();\n        }\n    },\n\n    canAdd(type, date) {\n        if (type == 'worktime') {\n            const c = get(this, 'Collector');\n            return c.canAddWorktime(date);\n        }\n        return true;\n    },\n\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n});\n","import { hash } from 'rsvp';\nimport Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport collector from '../../../classes/collector';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { isPresent } from '@ember/utils';\n\nexport default Route.extend({\n    Collector: service('collector-service'),\n    capi: service(),\n    ttapi: service(),\n    gui: service(),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n    },\n    AuthenticatedRouteMixin,\n\n    beforeModel() {\n        this._super(...arguments);\n        set(this, 'gui.sidebar', true);\n    },\n    model(params) {\n        const c = get(this, 'Collector');\n        const capi = get(this, 'capi');\n        const ttapi = get(this, 'ttapi');\n        if (!c.testNeedsOne('employer')) delete params.employer;\n        if (!params.user) delete params.user;\n        delete params.page;\n        params.sideload = true;\n        params.order = 'date';\n\n        let aparams = Object.assign({}, params);\n        if (c.testNeedsOne('abcense')) {\n            const split_date = params.date.split('_');\n            delete aparams.date;\n            aparams.startdate = split_date[0];\n            aparams.enddate = split_date[1];\n            aparams.order = 'startdate';\n            aparams.tt3flag = get(collector, 'tt3flag');\n            aparams.sideload = c.getSideloads('abcense');\n            aparams.raw = true;\n        }\n\n        return hash({\n            dailyWorktimeSums: c.testNeedsOne('worktime')\n                ? capi.findAll('worktime', Object.assign(params, { groupBy: 'date' }))\n                : [],\n            absences: c.testNeedsOne('abcense')\n                ? ttapi\n                      ._get('/api/absences/splitted', aparams)\n                      .then((data) => this._returnData(data, c))\n                : [],\n            worktimeSums: c.testNeedsOne('worktime')\n                ? capi.findAll('worktime', Object.assign(params, { groupBy: 'user' }))\n                : [],\n        });\n    },\n    resetController(controller, isExiting) {\n        if (isExiting) {\n            get(this, 'gui').resetSidebar();\n        }\n    },\n    actions: {\n        refreshModel(record) {\n            this.refresh();\n            record.off('didUpdate');\n        },\n    },\n\n    _returnData(data, c) {\n        if (isPresent(data.abcenses)) {\n            c.pushToStore(data);\n            return data;\n        } else {\n            return { abcenses: [] };\n        }\n    },\n});\n","import GeneralReportController from '../../../../controllers/general-report';\nimport { inject as service } from '@ember/service';\nimport EmberObject, { set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default GeneralReportController.extend({\n    collector: service('collector-service'),\n    gui: service(),\n    queryParams: ['worktime_page', 'absence_page', 'worktime_limit', 'absence_limit'],\n    worktime_page: 1,\n    absence_page: 1,\n    worktime_limit: 25,\n    absence_limit: 25,\n    status: 'all',\n    aggregatedrows: alias('model'),\n    form_status: alias('status'),\n    absence_order: alias('absence_settings.sortByColumn'),\n    settings: EmberObject.create({\n        massedit: true,\n        hideExports: true,\n        rowSettings: EmberObject.create({\n            editRoute: 'timetracker.edit',\n            historyRoute: 'timetracker.history',\n        }),\n    }),\n    absence_settings: EmberObject.create({\n        massedit: true,\n        hideExports: true,\n        rowSettings: EmberObject.create({\n            editRoute: 'abcenses.edit',\n            historyRoute: 'abcenses.history',\n        }),\n    }),\n    actions: {\n        setRowsPerPage(form, limit) {\n            set(this, form + '_page', 1);\n            set(this, form + '_limit', limit);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"PIMMpEPY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/aggregated/rows/loading/template.hbs\"}});","import { hash } from 'rsvp';\nimport GeneralReportRoute from '../../../../routes/general-report';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\n\nexport default GeneralReportRoute.extend({\n    store: service(),\n    collector: service('collector-service'),\n    queryParams: {\n        worktime_limit: {\n            refreshModel: true,\n        },\n        absence_limit: {\n            refreshModel: true,\n        },\n        worktime_page: {\n            refreshModel: true,\n        },\n        absence_page: {\n            refreshModel: true,\n        },\n        order: {\n            refreshModel: true,\n        },\n        absence_order: {\n            refreshModel: true,\n        },\n        form_status: {\n            refreshModel: true,\n        },\n    },\n    beforeModel(transition) {\n        this._super(...arguments);\n        if (\n            transition.targetName === 'timetracker.aggregated.rows' &&\n            transition.to.params.date === 'all'\n        ) {\n            set(this.controllerFor('timetracker.aggregated'), 'showAllRows', true);\n        }\n    },\n    model(params) {\n        let parentParams = this.paramsFor('timetracker.aggregated');\n        parentParams.sideload = true;\n        if (!this.collector.testNeedsOne('employer')) delete parentParams.employer;\n        if (!parentParams.user) delete parentParams.user;\n        let worktimeParams = parentParams;\n\n        let absenceParams = {\n            startdate: parentParams.date,\n            user: parentParams.user,\n            status: parentParams.status,\n            limit: parentParams.limit,\n            sideload: true,\n        };\n        if (params.date != 'all') {\n            parentParams.date = params.date;\n        }\n        if (params.form_status === 'all') {\n            delete params.form_status;\n        }\n\n        worktimeParams.limit = params.worktime_limit;\n        worktimeParams.order = params.order;\n        worktimeParams.status = parentParams.status;\n        worktimeParams.offset = (params.worktime_page - 1) * params.worktime_limit;\n\n        absenceParams.limit = params.absence_limit;\n        absenceParams.order = params.absence_order;\n        absenceParams.status = parentParams.status;\n        absenceParams.offset = (params.absence_page - 1) * params.absence_limit;\n\n        const c = get(this, 'collector');\n\n        return hash({\n            worktimeRows: c.testNeedsOne('worktime')\n                ? get(this, 'store').query('worktime', worktimeParams)\n                : [],\n            absenceRows: c.testNeedsOne('abcense')\n                ? get(this, 'store').query('abcense', absenceParams)\n                : [],\n            params: parentParams,\n        });\n    },\n    setupController(controller) {\n        this._super(...arguments);\n        // set filters for rows controllers settings object from parent controller, so they can be used in the general-report component\n        const parentFilters = this.controllerFor('timetracker.aggregated').filters;\n        set(controller, 'settings.filters', parentFilters);\n    },\n    actions: {\n        willTransition(transition) {\n            set(this.controllerFor('timetracker.aggregated'), 'showAllRows', false);\n\n            if (\n                transition.targetName === 'abcenses.edit' ||\n                transition.targetName === 'timetracker.edit'\n            ) {\n                transition.queryParams.afterSave = 'timetracker.aggregated';\n                this.transitionTo(transition.targetName).then((newRoute) =>\n                    this.setAfterSave(newRoute),\n                );\n            }\n        },\n    },\n    setAfterSave(newRoute) {\n        newRoute.controller.afterSave = 'timetracker.aggregated';\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"sQ0ltQWM\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"aggre-gated/rows\\\",null,[[\\\"model\\\",\\\"worktime_page\\\",\\\"absence_page\\\",\\\"settings\\\",\\\"absence_settings\\\",\\\"status\\\",\\\"setRowsPerPage\\\"],[[24,[\\\"aggregatedrows\\\"]],[24,[\\\"worktime_page\\\"]],[24,[\\\"absence_page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"absence_settings\\\"]],[24,[\\\"form_status\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/aggregated/rows/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"RIixOOe3\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"printLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"printableData\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"printableData\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"print-all-data\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"concat\\\",[[23,1,[\\\"user\\\",\\\"lastname\\\"]],\\\" \\\",[23,1,[\\\"user\\\",\\\"firstname\\\"]]],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"aggre-gated\\\",null,[[\\\"filters\\\",\\\"absenceTypes\\\",\\\"absences\\\",\\\"worktimeSums\\\",\\\"dailyWorktimeSums\\\",\\\"date\\\",\\\"showAllRows\\\",\\\"showWarning\\\",\\\"addNew\\\",\\\"showRows\\\",\\\"print\\\",\\\"printAll\\\",\\\"toggleAllRows\\\",\\\"filterChanged\\\"],[[24,[\\\"filters\\\"]],[23,1,[\\\"absences\\\",\\\"abcensetypes\\\"]],[23,1,[\\\"absences\\\",\\\"abcenses\\\"]],[23,1,[\\\"worktimeSums\\\",\\\"content\\\"]],[23,1,[\\\"dailyWorktimeSums\\\",\\\"content\\\"]],[24,[\\\"date\\\"]],[24,[\\\"showAllRows\\\"]],[24,[\\\"showWarning\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"print\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"printAll\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showAllRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"filterChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAllRowsByUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"aggre-gated/rows\\\",null,[[\\\"model\\\",\\\"worktime_page\\\",\\\"absence_page\\\",\\\"settings\\\",\\\"absence_settings\\\",\\\"status\\\",\\\"setRowsPerPage\\\"],[[23,1,[\\\"rows\\\"]],1,1,[24,[\\\"settings\\\"]],[24,[\\\"absence_settings\\\"]],\\\"all\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"aggre-gated\\\",null,[[\\\"filters\\\",\\\"absenceTypes\\\",\\\"absences\\\",\\\"worktimeSums\\\",\\\"dailyWorktimeSums\\\",\\\"date\\\",\\\"showAllRows\\\",\\\"showWarning\\\",\\\"addNew\\\",\\\"showRows\\\",\\\"print\\\",\\\"printAll\\\",\\\"toggleAllRows\\\",\\\"filterChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"absenceTypes\\\"]],[24,[\\\"absences\\\"]],[24,[\\\"worktimeSums\\\"]],[24,[\\\"dailyWorktimeSums\\\"]],[24,[\\\"date\\\"]],[24,[\\\"showAllRows\\\"]],[24,[\\\"showWarning\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"print\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"printAll\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showAllRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"filterChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/aggregated/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\nimport EmberObject, { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    ttapi: service(),\n\n    queryParams: ['date', 'user'],\n    user: null,\n    tests: null,\n    tolerance: 15,\n    anomalies: alias('model'),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                value: get(this, 'date'),\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                value: get(this, 'user'),\n            }),\n        ]);\n    }),\n\n    actions: {\n        filterChanged(value, field) {\n            set(this, field, value);\n        },\n\n        showAddModal(type, day, user) {\n            set(this, 'type', type);\n            let params = {};\n\n            if (type === 'abcense') {\n                params.startdate = day;\n                params.enddate = day;\n            } else {\n                params.date = day;\n            }\n\n            if (user) {\n                params.user = get(this, 'store').peekRecord('user', user);\n            }\n\n            get(this, 'store').createRecord(type, params);\n\n            this.transitionToRoute({ queryParams: { modal: [type, 'new'] } });\n        },\n\n        showEditModal(type, rows) {\n            let row = get(rows, 'firstObject');\n            let params = [type, get(row, 'id')];\n            this.transitionToRoute({ queryParams: { modal: params } });\n        },\n\n        updateTests(tests) {\n            //need to convert over from emberobject to normal json\n            tests = JSON.parse(JSON.stringify(tests));\n\n            new Promise((resolve) => {\n                let params = {};\n\n                params['date'] = get(this, 'date');\n                params['user'] = get(this, 'user');\n                params['page'] = get(this, 'page');\n                params['anomalies'] = tests;\n                get(this, 'ttapi')\n                    ._post('/api/anomalyReport', params)\n                    .then(this._reloadModel.bind(this)) //eslint: Use named functions defined on objects to handle promises\n                    .then(resolve());\n            });\n        },\n\n        toggleSettingsPanel() {\n            this.toggleProperty('showSettings');\n        },\n    },\n\n    _reloadModel(anomalies) {\n        set(this, 'model', anomalies);\n    },\n\n    date:\n        moment().startOf('isoweek').subtract(1, 'week').format('YYYY-MM-DD') +\n        '_' +\n        moment().format('YYYY-MM-DD'),\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport EmberObject, { get, set } from '@ember/object';\n\nexport default Route.extend({\n    ttapi: service(),\n    localStorageWrapper: service(),\n\n    queryParams: {\n        date: { refreshModel: true },\n        page: { refreshModel: true },\n        user: { refreshModel: true },\n    },\n\n    model: function (params) {\n        let anomalies = [];\n        let controller = this.controllerFor('timetracker/anomalies');\n        return new Promise((resolve) => {\n            new Promise((resolve) => {\n                let tests = get(this, 'ttapi')._get('/api/anomalyReport/anomalies');\n                resolve(tests);\n            }).then((tests) => {\n                tests.forEach((anomaly) => {\n                    let testParams = {\n                        test: anomaly,\n                        active: true,\n                        translatedName: 'anomaly.' + anomaly,\n                        tolerance: get(controller, 'tolerance'),\n                    };\n                    anomalies.push(EmberObject.create(testParams));\n                });\n\n                set(controller, 'anomalyTests', anomalies);\n                params['anomalies'] = JSON.parse(JSON.stringify(anomalies));\n\n                resolve(get(this, 'ttapi')._post('/api/anomalyReport', params));\n            });\n        });\n    },\n});\n","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { debounce } from '@ember/runloop';\n\nexport default Component.extend({\n    actions: {\n        toggleActive(test) {\n            test.toggleProperty('active');\n            this.update(); //calls the updateTests action passed from anomalies controller (check template)\n        },\n\n        setTolerance(test, tolerance) {\n            set(test, 'tolerance', tolerance);\n            debounce(this, this.update, 500); //calls the updateTests action passed from anomalies controller (check template)\n        },\n    },\n\n    update() {\n        this.updateTests(get(this, 'anomalyTests'));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+M3cVU8q\",\"block\":\"{\\\"symbols\\\":[\\\"test\\\"],\\\"statements\\\":[[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-default btn-toggleAnomalies\\\"],[10,\\\"data-toggle\\\",\\\"collapse\\\"],[10,\\\"data-target\\\",\\\"#anomaly_settings_panel\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"anomaly.settings\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Settings\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"anomaly_settings_panel\\\"],[10,\\\"class\\\",\\\"collapse container-fluid\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"anomalyTests\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-3 col-lg-2 col-xl-1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"ruleName\\\"],[8],[1,[28,\\\"t\\\",[[23,1,[\\\"translatedName\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3 col-md-3 col-lg-2 col-xl-1\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"theme\\\",\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"onLabel\\\",\\\"offLabel\\\",\\\"showLabes\\\"],[\\\"light\\\",[24,[\\\"disabled\\\"]],[23,1,[\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\",[23,1,[]]],null],\\\"medium\\\",\\\"on\\\",\\\"off\\\",true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row settings-row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"active\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[1,[28,\\\"t\\\",[\\\"anomaly.tolerance\\\"],null],false],[0,\\\" : \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\",\\\"input\\\"],[\\\"toleranceInput\\\",\\\"number\\\",[23,1,[\\\"tolerance\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setTolerance\\\",[23,1,[]],[23,1,[\\\"tolerance\\\"]]],null]]]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/anomalies/settings-panel/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"v81bGMd0\",\"block\":\"{\\\"symbols\\\":[\\\"anomaly\\\",\\\"index\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"worktime\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"timetracker/anomalies/settings-panel\\\",null,[[\\\"anomalyTests\\\",\\\"updateTests\\\"],[[24,[\\\"anomalyTests\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateTests\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"anomalies\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"anomalies\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"date\\\"]],\\\"L\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"user\\\",[[23,1,[\\\"user\\\"]]],null],false],[0,\\\" - \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"anomaly.names.\\\",[23,1,[\\\"name\\\"]]],null]],null],false],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-info pull-right\\\"],[10,\\\"data-toggle\\\",\\\"collapse\\\"],[11,\\\"data-target\\\",[29,[\\\"#fix_actions_\\\",[23,2,[]]]]],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"anomaly.fix_here\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"anomaly.values.given\\\"],null],false],[0,\\\": \\\"],[1,[23,1,[\\\"values\\\",\\\"given\\\"]],false],[0,\\\" - \\\"],[1,[28,\\\"t\\\",[\\\"anomaly.values.expected\\\"],null],false],[0,\\\": \\\"],[1,[23,1,[\\\"values\\\",\\\"expected\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"id\\\",[29,[\\\"fix_actions_\\\",[23,2,[]]]]],[10,\\\"class\\\",\\\"collapse\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAddModal\\\",\\\"abcense\\\",[23,1,[\\\"date\\\"]],[23,1,[\\\"user\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"anomaly.add_abcense\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAddModal\\\",\\\"worktime\\\",[23,1,[\\\"date\\\"]],[23,1,[\\\"user\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"anomaly.add_worktime\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"meta\\\",\\\"absences\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showEditModal\\\",\\\"abcense\\\",[23,1,[\\\"meta\\\",\\\"absences\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"anomaly.edit_abcense\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,1,[\\\"meta\\\",\\\"worktimes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showEditModal\\\",\\\"worktime\\\",[23,1,[\\\"meta\\\",\\\"worktimes\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"anomaly.edit_worktime\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"anomaly.no_anomalies\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/anomalies/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalController;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    queryParams: ['date', 'employer'],\n    userSelector2: true,\n    employer: null,\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'employer',\n                type: 'database',\n                form: 'worktime',\n                name: 'employer',\n                singleselect: 'true',\n            }),\n            Em.Object.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                name: 'date',\n                value: this.get('date'),\n                wagePeriods: true,\n            }),\n        ]);\n    }),\n    dateRange: Ember.computed('intl.primaryLocale', function () {\n        return Em.A([\n            Em.Object.create({\n                id:\n                    moment().startOf('week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('week').format('YYYY-MM-DD'),\n                name:\n                    this.get('intl').t('timetracker.approval.this_week') +\n                    ': ' +\n                    moment().startOf('week').format('L') +\n                    '-' +\n                    moment().endOf('week').format('L'),\n            }),\n            Em.Object.create({\n                id:\n                    moment().subtract(1, 'week').startOf('week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'week').endOf('week').format('YYYY-MM-DD'),\n                name:\n                    this.get('intl').t('timetracker.approval.last_week') +\n                    ': ' +\n                    moment().subtract(1, 'week').startOf('week').format('L') +\n                    '-' +\n                    moment().subtract(1, 'week').endOf('week').format('L'),\n            }),\n            Em.Object.create({\n                id:\n                    moment().startOf('week').subtract(2, 'week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('week').subtract(1, 'week').format('YYYY-MM-DD'),\n                name:\n                    this.get('intl').t('timetracker.approval.last_two_weeks') +\n                    ': ' +\n                    moment().startOf('week').subtract(2, 'week').format('L') +\n                    '-' +\n                    moment().endOf('week').subtract(1, 'week').format('L'),\n            }),\n            Em.Object.create({\n                id:\n                    moment().subtract(1, 'months').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n                name:\n                    this.get('intl').t('timetracker.approval.last_month') +\n                    ': ' +\n                    moment().subtract(1, 'months').format('L') +\n                    '-' +\n                    moment().format('L'),\n            }),\n        ]);\n    }),\n    actions: {\n        filterChanged: function (value, fieldName) {\n            if (fieldName === 'employer') {\n                if (value == null) {\n                    return this.set('employer', '');\n                } else {\n                    return this.set('employer', value.id);\n                }\n            } else {\n                return this.set(fieldName, value);\n            }\n        },\n    },\n});\n\nexport default TimetrackerApprovalController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalIndexController;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalIndexController = Ember.Controller.extend({\n    approvalController: Em.inject.controller('timetracker/approval'),\n    model: Em.computed.alias('approvalController.model'),\n    date: Em.computed.alias('approvalController.date'),\n    dateinterval: Em.computed('date', function () {\n        var dates, format;\n        dates = this.get('date').split('_');\n        format = moment.localeData().longDateFormat('L');\n        return moment(dates[0]).format(format) + ' - ' + moment(dates[1]).format(format);\n    }),\n    sites: Ember.computed('model.[]', function () {\n        var k, ret, site, sites, worktimes;\n        worktimes = this.get('model');\n        sites = {};\n        worktimes.forEach(function (time) {\n            var project_id;\n            project_id = time.get('project.id');\n            if (sites[project_id]) {\n                return sites[project_id].amount++;\n            } else {\n                return (sites[project_id] = {\n                    id: project_id,\n                    amount: 1,\n                    name: time.get('project.name'),\n                });\n            }\n        });\n        ret = Em.A([]);\n        for (k in sites) {\n            site = sites[k];\n            ret.pushObject(site);\n        }\n        return ret;\n    }),\n});\n\nexport default TimetrackerApprovalIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalIndexRoute;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalIndexRoute = Ember.Route.extend();\n\n//    model: (params) ->\n//        params.status = 'open'\n//        params.sideload = true\n//#        params.date = moment().startOf('week').format('YYYY-MM-DD')+'_'+moment().endOf('week').format('YYYY-MM-DD')\n//        @store.query('worktime', params)\nexport default TimetrackerApprovalIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"OIgpSU3t\",\"block\":\"{\\\"symbols\\\":[\\\"site\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"approval.worktimes\\\"],[[\\\"dateinterval\\\"],[[24,[\\\"dateinterval\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sites\\\"]]],[[\\\"key\\\"],[\\\"id\\\"]],{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\",\\\"model\\\"],[\\\"a\\\",\\\"list-group-item\\\",\\\"timetracker.approval.site\\\",[23,1,[\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[23,1,[\\\"amount\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/approval/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerApprovalRoute = Ember.Route.extend({\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params.status = 'open||system_edited';\n        params.sideload = true;\n        params.limit = 'all';\n        //        params.date = moment().startOf('week').format('YYYY-MM-DD')+'_'+moment().endOf('week').format('YYYY-MM-DD')\n        params.employer = this.controllerFor('timetracker.approval').get('employer');\n        if (!this.get('Collector').testNeedsOne('worktime.employer')) {\n            delete params.employer;\n        }\n        return this.store.query('worktime', params);\n    },\n    beforeModel: function () {\n        if ('readonly' in collector.forms.worktime.objects.status.features) {\n            return this.transitionTo('timetracker.timecard');\n        }\n    },\n    setupController: function (controller, model) {\n        return this._super(controller, model);\n    },\n});\n\nexport default TimetrackerApprovalRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/site/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalSiteController;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalSiteController = Ember.Controller.extend({\n    //    needs: [\"timetracker/approval/site/user\"]\n    //    queryParams: [\"date\": {as: 'other-date'}]\n    userController: Ember.inject.controller('timetracker/approval/site/user'),\n    approvalIndexController: Ember.inject.controller('timetracker/approval/index'),\n    sites: Ember.computed('model.worktimes.firstObject.project.id', function () {\n        return this.get('approvalIndexController.sites');\n    }),\n    users: Ember.computed('model.worktimes.[]', function () {\n        var k, ret, user, users, worktimes;\n        worktimes = this.get('model.worktimes');\n        users = Em.A({});\n        worktimes.forEach(function (time) {\n            var user_id;\n            user_id = time.get('user.id');\n            if (!users[user_id]) {\n                return (users[user_id] = time.get('user'));\n            }\n        });\n        ret = Em.A([]);\n        for (k in users) {\n            user = users[k];\n            ret.pushObject(user);\n        }\n        return ret;\n    }),\n    currentUser: Ember.computed('users', 'userController.model.firstObject.user', function () {\n        if (this.get('userController.model.firstObject.user')) {\n            return this.get('userController.model.firstObject.user');\n        } else {\n            return this.get('users.firstObject');\n        }\n    }),\n    nextUser: Ember.computed('users', 'userController.model.firstObject.user', function () {\n        var found, i, len, ref, self, user;\n        self = this;\n        found = false;\n        ref = this.get('users');\n        for (i = 0, len = ref.length; i < len; i++) {\n            user = ref[i];\n            if (found) {\n                return user;\n            }\n            if (user.get('id') === self.get('currentUser.id')) {\n                found = true;\n            }\n        }\n    }),\n    previousUser: Ember.computed('users', 'userController.model.firstObject.user', function () {\n        var i, last, len, ref, self, user;\n        self = this;\n        last = void 0;\n        ref = this.get('users');\n        for (i = 0, len = ref.length; i < len; i++) {\n            user = ref[i];\n            if (user.get('id') === self.get('currentUser.id')) {\n                return last;\n            }\n            last = user;\n        }\n    }),\n    currentSite: Ember.computed('sites', 'model.firstObject.project', function () {\n        return this.get('model.worktimes.firstObject.project');\n    }),\n    previousSite: Ember.computed('sites', function () {\n        var i, last, len, ref, self, site;\n        self = this;\n        last = void 0;\n        ref = this.get('sites');\n        for (i = 0, len = ref.length; i < len; i++) {\n            site = ref[i];\n            if (site['id'] === self.get('currentSite.id')) {\n                return last;\n            }\n            last = site;\n        }\n    }),\n    nextSite: Ember.computed('sites', function () {\n        var found, i, len, ref, self, site;\n        self = this;\n        found = false;\n        ref = this.get('sites');\n        for (i = 0, len = ref.length; i < len; i++) {\n            site = ref[i];\n            if (found) {\n                return site;\n            }\n            if (site['id'] === self.get('currentSite.id')) {\n                found = true;\n            }\n        }\n    }),\n});\n\nexport default TimetrackerApprovalSiteController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/site/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalSiteRoute;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalSiteRoute = Ember.Route.extend({\n    model: function (params) {\n        //        params.status = 'open'\n        params.sideload = true;\n        params.date = this.controllerFor('timetracker.approval').get('date');\n        params.employer = this.controllerFor('timetracker.approval').get('employer');\n        if (!this.get('Collector').testNeedsOne('worktime.employer')) {\n            delete params.employer;\n        }\n        return Em.RSVP.hash({\n            project: this.store.findRecord('project', params.project),\n            worktimes: this.store.query('worktime', params),\n        });\n    },\n    afterModel: function (model, transition) {\n        var first, worktimes;\n        worktimes = model.worktimes;\n        if (worktimes.get('length') > 0) {\n            first = worktimes.get('firstObject.user.id');\n            return this.transitionTo('timetracker.approval.site.user', first);\n        }\n    },\n});\n\nexport default TimetrackerApprovalSiteRoute;\n","export default Ember.HTMLBars.template({\"id\":\"7oeFJplA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"currentSite\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"previousSite\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"classNames\\\",\\\"tagName\\\",\\\"route\\\",\\\"models\\\"],[\\\"btn btn-m-default pull-left\\\",\\\"a\\\",\\\"timetracker.approval.site.user\\\",[28,\\\"array\\\",[[24,[\\\"previousSite\\\",\\\"id\\\"]],[24,[\\\"currentUser\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"standard-icon\\\",[\\\"previous\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"approval-menu pull-right hidden-xs\\\"],[8],[1,[24,[\\\"previousSite\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"currentSite\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"nextSite\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"pull-left approval-menu hidden-xs\\\"],[8],[1,[24,[\\\"nextSite\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"classNames\\\",\\\"tagName\\\",\\\"route\\\",\\\"models\\\"],[\\\"btn btn-m-default pull-right\\\",\\\"a\\\",\\\"timetracker.approval.site.user\\\",[28,\\\"array\\\",[[24,[\\\"nextSite\\\",\\\"id\\\"]],[24,[\\\"currentUser\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"standard-icon\\\",[\\\"next\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentUser\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"previousUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"classNames\\\",\\\"tagName\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-m-default pull-left\\\",\\\"a\\\",\\\"timetracker.approval.site.user\\\",[24,[\\\"previousUser\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"standard-icon\\\",[\\\"previous\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"approval-menu pull-right hidden-xs\\\"],[8],[1,[24,[\\\"previousUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"previousUser\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"currentUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"currentUser\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"nextUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"pull-left approval-menu hidden-xs\\\"],[8],[1,[24,[\\\"nextUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"nextUser\\\",\\\"lastname\\\"]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"classNames\\\",\\\"tagName\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-m-default pull-right\\\",\\\"a\\\",\\\"timetracker.approval.site.user\\\",[24,[\\\"nextUser\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"standard-icon\\\",[\\\"next\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n         \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well text-center\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.approval.site.no_worktimes\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/approval/site/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/site/user/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalSiteUserController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../../controllers/general-report';\n\nimport collector from '../../../../../classes/collector';\n\nTimetrackerApprovalSiteUserController = GeneralReportController.extend({\n    //    status: 'all'\n    queryParams: ['status', 'page'],\n    form: 'worktime',\n    localStorageKey: 'Tt4.WorktimeApproval',\n    showColumns: ['task', 'status', 'starttime', 'endtime', 'work_hours', 'pause', 'description'],\n    sortByDates: true,\n    status: 'all',\n    statusSelector: true,\n    user: null,\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    project: null,\n    date: Em.computed(function () {\n        return this.get('model').get('query.date');\n    }),\n    setData: function (params) {\n        this.set('user', params.user);\n        this.set('project', params.project);\n        return this.set('date', params.date);\n    },\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                form: 'worktime',\n                value: this.get('project'),\n            }),\n            Em.Object.create({\n                field: 'user',\n                form: 'worktime',\n                value: this.get('user'),\n            }),\n            Em.Object.create({\n                field: 'date',\n                start: '',\n                end: '',\n                form: 'worktime',\n                type: 'date',\n                value: this.get('date'),\n            }),\n        ]);\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                modal: true,\n            },\n            historyRoute: 'timetracker.history',\n        }),\n    }),\n    hideColumns: Em.on('init', function () {\n        var fields;\n        fields = collector.getFormObjects('worktime');\n        if (\n            fields &&\n            fields.starttime.features.hide &&\n            fields.endtime.features.hide &&\n            fields.work_hours.features.mandatory\n        ) {\n            return this.set('settings.hideColumns', ['starttime', 'endtime']);\n        }\n    }),\n});\n\nexport default TimetrackerApprovalSiteUserController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/site/user/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalSiteUserRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../../routes/general-report';\n\nTimetrackerApprovalSiteUserRoute = GeneralReportRoute.extend({\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.setData(model.query);\n    },\n    model: function (params) {\n        var parentModel;\n        params = this._super(params);\n        if (params.status === 'all') {\n            delete params.status;\n        }\n        parentModel = this.modelFor('timetracker.approval.site');\n        params.project = parentModel.project.get('id');\n        params.date = this.controllerFor('timetracker.approval').get('date');\n        params.employer = this.controllerFor('timetracker.approval').get('employer');\n        if (!this.get('Collector').testNeedsOne('worktime.employer')) {\n            delete params.employer;\n        }\n        params.sideload = true;\n        //        params.status = 'open'\n        return this.store.query('worktime', params);\n    },\n});\n\nexport default TimetrackerApprovalSiteUserRoute;\n","export default Ember.HTMLBars.template({\"id\":\"cATHirzQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"settings\\\",\\\"page\\\",\\\"showColumns\\\",\\\"status\\\",\\\"sortByDates\\\",\\\"localStorageKey\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"page\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"status\\\"]],true,\\\"worktime.approval\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/approval/site/user/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"aSvPSN8F\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-employer\\\"],[8],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"classes\\\",\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[\\\"form-control\\\",[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/approval/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/avi/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAviController;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nimport csvExport from '../../../mixins/csv-export';\n\nimport avi from '../../../mixins/avi';\n\nimport initController from '../../../mixins/init-controller';\n\nimport $ from 'jquery';\n\nOrientationsAviController = Ember.Controller.extend(pdfExport, csvExport, avi, initController, {\n    intl: Ember.inject.service(),\n    collector: Ember.inject.service('collector-service'),\n    limit: 25,\n    page: 1,\n    project: null,\n    country: null,\n    queryParams: ['project', 'country', 'page', 'showWorkingNow'],\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                form: 'worktime',\n                singleselect: 'true',\n                value: this.project,\n            }),\n            Em.Object.create({\n                field: 'homecountry',\n                form: 'user',\n                type: 'dropdown_country',\n                value: this.country,\n            }),\n        ]);\n    }),\n    rowActions: [],\n    pages: Em.computed('model.count', function () {\n        if (this.get('showWorkingNow') === 'true') {\n            return 1;\n        } else {\n            return Math.ceil(this.get('model.count') / this.get('limit'));\n        }\n    }),\n    showColumns: [\n        'firstname',\n        'lastname',\n        'birthdate',\n        'taxnumber',\n        'employer',\n        'startdate',\n        'enddate',\n        'orientation_ori_date',\n        'orientation_pass_end',\n        'homecountry',\n        'sent_contact_person',\n        'sent_contact_address',\n        'workpass',\n    ],\n    init_functions: function () {\n        if(this.collector.testNeedsOne('products.workPermit')) {\n            // if the user has the workPermit product,\n            // we need to add the workpermit columns to the showColumns array after the homecountry column\n            const pushIndex = this.showColumns.indexOf('homecountry') + 1;\n            this.showColumns.replace(pushIndex, 0, ['nationality', 'work_permit_type', 'workpermit']);\n        }\n\n        return this._super();\n    },\n    data: Em.computed('model.users.[]', function () {\n        var data;\n        data = this.get('model.users');\n        if (!data) {\n            return null;\n        }\n        return this.format_data(data);\n    }),\n    format_data: function (data, formatExport = false) {\n        var columns, formatted_data, intl;\n        intl = this.get('intl');\n        columns = this.get('showColumns');\n        formatted_data = Em.A([]);\n        data.forEach((unformatted_row) => {\n            var row;\n            row = Ember.Object.create();\n            if (unformatted_row.id) {\n                row.id = unformatted_row.id;\n            }\n            $.each(columns, (key, column) => {\n                var cell;\n                cell = unformatted_row[column];\n                if (column === 'birthdate' || column === 'startdate' || column === 'enddate') {\n                    if (cell != null) {\n                        cell = moment(cell).format('L');\n                    }\n                }\n                if (column === 'employer') {\n                    if (cell) {\n                        cell = cell.emp_id + ' ' + cell.name;\n                    }\n                }\n                if (column === 'orientation_ori_date') {\n                    if (unformatted_row.orientation != null) {\n                        cell = moment(unformatted_row.orientation.ori_date).format('L');\n                    }\n                }\n                if (column === 'orientation_pass_end') {\n                    if (unformatted_row.orientation != null) {\n                        cell = moment(unformatted_row.orientation.pass_end).format('L');\n                    }\n                }\n                if (column === 'workpass') {\n                    if (cell === false) {\n                        cell = intl.t('general.no');\n                    }\n                    if (cell === true) {\n                        cell = intl.t('general.yes');\n                    }\n                }\n                if (column === 'workpermit' && formatExport) {\n                    if (cell) {\n                        data = Ember.A(cell);\n                        cell = this.collector._format_(data, \"user\", 'workpermit', formatExport); \n                    }\n                }\n                return (row[column] = cell);\n            });\n            return formatted_data.pushObjects([row]);\n        });\n        return formatted_data;\n    },\n    // get translation for every column\n    translated_columns: Em.computed('showColumns', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('showColumns');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.avi.' + item));\n        });\n        return translated_columns;\n    }),\n    make_pdf_export: function (data) {\n        var addHeader, element, intl, project;\n        intl = this.get('intl');\n        element = this.createPdfTableElement(\n            this.get('showColumns'),\n            data,\n            this.get('translated_columns'),\n        );\n        project = this.get('store').peekRecord('project', this.get('project'));\n        addHeader = intl.t('report.orientations.avi') + ' - ' + project.get('name');\n        return this.createPdfFromElements([element], 'download', addHeader.toString(), 16).then(\n            (file) => {\n                if (typeof cordova !== 'undefined' && cordova !== null) {\n                    return this.get('cordova').openFile(file, 'application/pdf');\n                }\n            },\n        );\n    },\n    make_csv_export: function (data) {\n        var element;\n        element = this.createCsvElement(\n            this.get('showColumns'),\n            data,\n            this.get('translated_columns'),\n        );\n        return this.createCsvFromElements(element, false);\n    },\n    actions: {\n        catchActions: function (action, params) {\n            if (action === 'columnClicked') {\n                return;\n            }\n            return this.send(action, params);\n        },\n        filterChanged: function (value, fieldName) {\n            if (fieldName === 'project') {\n                if (value == null) {\n                    this.set('project', '');\n                } else {\n                    this.set('project', value.id);\n                }\n            }\n            if (fieldName === 'homecountry') {\n                return this.set('country', value);\n            }\n        },\n        showWorkingNowRows: function () {\n            //stupid way to find out if its true, sometimes it's string and sometimes boolean\n            if (this.get('showWorkingNow') === true || this.get('showWorkingNow') === 'true') {\n                this.set('showWorkingNow', false);\n            } else {\n                this.set('showWorkingNow', true);\n                this.set('page', 1);\n            }\n            return false;\n        },\n        export_csv: function () {\n            var checked_data, data, params, use_checked_rows;\n            data = this.get('data');\n            use_checked_rows = false;\n            checked_data = Em.A([]);\n            data.forEach((row) => {\n                if (row.checkedClass === 'checked') {\n                    use_checked_rows = true;\n                    return checked_data.push(row);\n                }\n            });\n            if (use_checked_rows) {\n                data = checked_data;\n                return this.make_csv_export(data);\n            } else {\n                params = {\n                    project: this.get('project'),\n                    order: this.get('order'),\n                    limit: 'all',\n                };\n                if (this.get('showWorkingNow')) {\n                    params.showWorkingNow = 'true';\n                }\n                return this.getAviData(params).then((avidata) => {\n                    data = this.format_data(avidata.users, 'csv');\n                    return this.make_csv_export(data);\n                });\n            }\n        },\n        export_pdf: function () {\n            var checked_data, data, params, use_checked_rows;\n            data = this.get('data');\n            use_checked_rows = false;\n            checked_data = Em.A([]);\n            data.forEach((row) => {\n                if (row.checkedClass === 'checked') {\n                    use_checked_rows = true;\n                    return checked_data.push(row);\n                }\n            });\n            if (use_checked_rows) {\n                data = checked_data;\n                return this.make_pdf_export(data);\n            } else {\n                params = {\n                    project: this.get('project'),\n                    order: this.get('order'),\n                    limit: 'all',\n                };\n                if (this.get('showWorkingNow')) {\n                    params.showWorkingNow = 'true';\n                }\n                return this.getAviData(params).then((avidata) => {\n                    data = this.format_data(avidata.users, 'pdf');\n                    return this.make_pdf_export(data);\n                });\n            }\n        },\n    },\n});\n\nexport default OrientationsAviController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/avi/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAviRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport avi from '../../../mixins/avi';\n\nOrientationsAviRoute = GeneralReportRoute.extend(avi, {\n    queryParams: {\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        country: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        showWorkingNow: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        return this.getAviData(params);\n    },\n});\n\nexport default OrientationsAviRoute;\n","export default Ember.HTMLBars.template({\"id\":\"6H5HWOH2\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"columns\\\",\\\"column\\\",\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 text-right\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showWorkingNowRows\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showWorkingNow\\\"]],\\\"true\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"report.avi.show_all\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"report.avi.show_working_now\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\",[24,[\\\"data\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\",[24,[\\\"data\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"checkable\\\",\\\"hideSort\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",false,true]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[29,[[23,1,[\\\"class\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"workpermit\\\"],null],[28,\\\"eq\\\",[[23,3,[]],\\\"work_permit_type\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                    \\\"],[5,\\\"addon/value-format\\\",[],[[\\\"@form\\\",\\\"@field\\\",\\\"@value\\\",\\\"@record\\\"],[\\\"user\\\",[23,3,[]],[28,\\\"get\\\",[[23,1,[]],[23,3,[]]],null],[23,1,[]]]]],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"get\\\",[[23,1,[]],[23,3,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pages\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/avi/template.hbs\"}});","/* eslint-disable ember/named-functions-in-promises */\nimport { htmlSafe } from '@ember/string';\nimport { A } from '@ember/array';\nimport EmberObject, { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Controller from '@ember/controller';\nimport initController from '../../../mixins/init-controller';\nimport FormatUtil from 'tt4/utils/format';\nconst format = FormatUtil.create(); // because reasons\n\nconst { alias } = computed;\n\nexport default Controller.extend(initController, {\n    store: service(),\n    collector: service('collector-service'),\n    intl: service(),\n    capi: service(),\n    ttapi: service(),\n    dialogs: service(),\n    gui: service(),\n    session: service(),\n    fileExports: service('file-exports'),\n    flags: service(),\n    evented: service(),\n    router: service(),\n    queryParams: ['date', 'page', 'user', 'employer', 'hideEmptyRows'],\n    date: null,\n    page: 1,\n    user: null,\n    employer: null,\n    limit: 25,\n    hideEmptyRows: false,\n    historyDataLoading: false,\n    historyFilters: null,\n    newDeducterRecord: null,\n    bankfields: null,\n    historyOldestDate: null,\n    historyAllLoaded: false,\n    loadOlderHistory: false,\n\n    accounts: alias('model.accounts'),\n    userRows: alias('model.users'),\n\n    usersWithBanks: computed('userRows.users', function () {\n        return get(this, 'userRows.users').map(this.reformatUserRow.bind(this));\n    }),\n\n    columnList: computed('accounts', function () {\n        const list = ['user'];\n\n        get(this, 'accounts').forEach((account) => {\n            let column = get(account, 'column');\n            if (!column) {\n                column = 'bank_' + get(account, 'id');\n            }\n\n            list.push(column);\n        });\n\n        return list;\n    }),\n\n    banks: computed(function () {\n        return get(this, 'store').peekAll('bank');\n    }),\n\n    translated_columns: computed('year', function () {\n        return get(this, 'columnList').map((column) => {\n            if (column === 'user') {\n                return get(this, 'intl').t('defaults.field.' + column);\n            } else {\n                let account = get(this, 'accounts').findBy('column', column);\n                if (!account) {\n                    account = get(this, 'accounts').findBy('id', column.replace('bank_', ''));\n                }\n                return get(account, 'name');\n            }\n        });\n    }),\n\n    translated_columns2: computed('year', function () {\n        return get(this, 'showHistoryColumns').map((column) => {\n            if (column === 'date') {\n                return get(this, 'intl').t('report.worktime.date');\n            } else if (column === 'bank') {\n                return get(this, 'intl').t('settings.timetracker.banks');\n            } else if (column === 'absencetype') {\n                return get(this, 'intl').t('abcense.abcensetype');\n            } else if (column === 'description') {\n                return get(this, 'intl').t('worktime.description');\n            } else if (column === 'hours') {\n                return get(this, 'intl').t('report.worktime.work_hours');\n            } else if (column === 'addhours') {\n                return get(this, 'intl').t('report.bankdeducter.addhours');\n            } else {\n                return column;\n            }\n        });\n    }),\n\n    filters: computed('date', function () {\n        let filters = A([\n            EmberObject.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                value: get(this, 'date'),\n                defaultValue: get(this, 'default_date'),\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                value: get(this, 'user'),\n            }),\n            EmberObject.create({\n                field: 'employer',\n                type: 'database',\n                form: 'worktime',\n                value: get(this, 'employer'),\n            }),\n        ]);\n\n        return filters;\n    }),\n\n    isCordova: computed(function () {\n        return get(this, 'gui.isCordova');\n    }),\n\n    earliestDate: computed('model.firstDate', function () {\n        // If model.firstDate is empty or undefined, fallback to 6 years ago to match old logic, etc.\n        return get(this, 'model.firstDate') || moment().subtract(6, 'years').format('YYYY-MM-DD');\n    }),\n\n    currentDate: computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n\n    actions: {\n        clearAllFilters() {\n            // Reset the query param properties\n            set(this, 'date', null);\n            set(this, 'user', null);\n            set(this, 'employer', null);\n            set(this, 'page', 1);\n\n            // Transition to the same route with an empty queryParams object\n            this.router.transitionTo('timetracker.bank', { queryParams: {} });\n          },\n        deducterAdded(rec) {\n            if (this.checkedRows) {\n                let promises = [];\n                for (let i = 1; i < this.checkedRows.length; i++) {\n                    promises.push(\n                        get(this, 'store')\n                            .createRecord('bankdeducter', {\n                                date: get(rec, 'date'),\n                                user: this.checkedRows[i],\n                                hours: get(rec, 'hours'),\n                                column: rec.column,\n                                addhours: get(rec, 'addhours'),\n                                description: get(rec, 'description'),\n                            })\n                            .save(),\n                    );\n                }\n\n                Promise.all(promises).then(() => {\n                    set(this, 'checkedRows', false);\n                    this.send('refreshReport');\n                });\n            } else {\n                this.send('refreshReport');\n            }\n        },\n\n        filterChanged(value, field) {\n            // only way to empty date-filter\n            if (field == 'date' && value == get(this, 'default_date')) {\n                set(this, 'filters.0.value', null);\n                this.notifyPropertyChange('filters');\n            }\n            set(this, field, value);\n            if (field == 'user') {\n                set(this, 'filters.1.value', value);\n                this.router.transitionTo({ queryParams: {\n                    [field]: value,\n                    page: 1, // Reset page to 1 when changing user\n                 } });\n            }\n            if (field == 'employer') {\n                set(this, 'filters.2.value', value);\n                this.router.transitionTo({ queryParams: {\n                    [field]: value,\n                    page: 1, // Reset page to 1 when changing employer\n                 } });\n            }\n        },\n\n        closeEditManualEntry() {\n            set(this, 'showFormDeducter', null);\n            this.send('refreshReport');\n            this.send('showWorkBankHistoryModal', get(this, 'selectedUserObj'));\n        },\n\n        historyRowAction(action, row) {\n            if (action === 'remove') {\n                get(this, 'dialogs')\n                    .confirm(get(this, 'intl').t('report.confirm_delete'))\n                    .then(this.removeOrNot.bind(this, row));\n            }\n            if (action === 'edit') {\n                let found = get(this, 'store').peekRecord('bankdeducter', row.id);\n                if (found) {\n                    set(this, 'showFormDeducter', found);\n                } else {\n                    get(this, 'store')\n                        .peekRecord('bankdeducter', row.id)\n                        .then((data) => set(this, 'showFormDeducter', data));\n                }\n            }\n        },\n\n        onFilterHistoryChange(name, e) {\n            this.filterHistory(name, e.target.value);\n        },\n\n        showDeducterModal(on) {\n            if (this.banks.length === 0) {\n                return get(this, 'dialogs').alert(\n                    get(this, 'intl').t('worktimebank.notice.no_worktimebanks_found'),\n                );\n            }\n\n            set(this, 'newDeducterRecord', this.store.createRecord('bankdeducter'));\n            set(this, 'values', { user: null, hours: 0, addhours: false, description: null });\n            set(this, 'showDeducter', on);\n        },\n\n        setBankDate(date) {\n            set(this, 'values.date', date);\n        },\n\n        selectUser(record) {\n            set(this, 'values.user', record);\n        },\n\n        setHours(hours) {\n            set(this, 'values.hours', hours);\n        },\n        setAddhours(check) {\n            set(this, 'values.addhours', check);\n        },\n\n        changeColumn(column) {\n            set(this, 'values.column', column);\n        },\n\n        setDesc(desc) {\n            set(this, 'values.description', desc);\n        },\n\n        async showWorkBankHistoryModal(user) {\n            const userid = user.userid;\n            let absencetypes_ids = [];\n            let banks = [];\n\n            const existingHistoryData = this.loadOlderHistory ? get(this, 'historyData') || [] : [];\n            let historyData = [];\n\n            // Only set historyData to null if we're NOT loading older history\n            if (!this.loadOlderHistory) {\n                set(this, 'historyDataLoading', true);\n                set(this, 'historyData', null);\n                set(this, 'selectedUser', null);\n                set(this, 'historyData_filtered', null);\n                set(this, 'historyFilters.type', 'both');\n                set(this, 'historyFilters.bank', 'all');\n                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    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;\n                promises = [];\n                if (this.get('by_email') && model.get('email')) {\n                    email_title = this.get('intl').t('changepassword.reset_email_title');\n                    email_content = this.get('intl').t('changepassword.reset_email_content', {\n                        psw: psw,\n                        username: username,\n                        company: company,\n                    });\n                    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                    }));\n                }\n                if (this.get('by_sms') && model.get('phone')) {\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 (this.get('by_email') && model.get('email')) {\n                        this.get('notifications').success(this.get('intl').t('general.email_sent'), {\n                            autoClear: true,\n                        });\n                    }\n                    if (this.get('by_sms') && model.get('phone')) {\n                        this.get('notifications').success(this.get('intl').t('general.sms_sent'), {\n                            autoClear: true,\n                        });\n                    }\n                    this.set('isSaving', false);\n                    this.set('anySent', promises.length > 0);\n                    this.set('resetSent', true);\n                }).catch(() => {\n                    this.get('notifications').error(this.get('intl').t('general.error'), {\n                        autoClear: true,\n                    });\n                    this.set('isSaving', false);\n                    this.set('showResetDialog', false);\n                });\n            }).catch(() => {\n                this.get('notifications').error(this.get('intl').t('general.error'), {\n                    autoClear: true,\n                });\n                this.set('isSaving', false);\n                this.set('showResetDialog', false);\n            });\n        },\n        removeModal: function () {\n            this.set('showResetDialog', false);\n            this.set('resetSent', false);\n            this.set('anySent', false);\n            this.set('isSaving', false);\n            this.set('by_email', false);\n            this.set('by_sms', false);\n        },\n    },\n    resetPsw: function () {\n        this.set('showResetDialog', true);\n        return false;\n    },\n    changeCountry: function (countrycode) {\n        var phone, val;\n        val = this.get('model.phone');\n        if (!val) {\n            phone = countrycode;\n        } else if (val.slice(0, 1) !== '+') {\n            phone = countrycode + this.get('model.phone');\n        } else {\n            phone = val;\n        }\n        return this.set('model.phone', phone);\n    },\n    fieldSettings: Em.computed('model', function () {\n        var i_am_this_person;\n        if (this.get('session.currentUser.id') === this.get('model.id')) {\n            i_am_this_person = true;\n        } else {\n            i_am_this_person = false;\n        }\n        return Em.A({\n            edit: true,\n            own_profile: i_am_this_person,\n        });\n    }),\n});\n\nexport default UsersEditIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nUsersEditIndexRoute = GeneralAddRoute.extend({\n    edit: true,\n    controllerName: 'users/edit/index',\n    model: function () {\n        return this.modelFor('users.edit');\n    },\n});\n\nexport default UsersEditIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"/TpAPZ/F\",\"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\\\":[[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\\\":[]}],[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\\\",[[23,0,[\\\"resetSent\\\"]]],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('retention');\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        this.route('retention-log');\n    });\n\n    this.route('thereport', { path: 'comboreport' }, function () {\n        this.route('page', { path: 'page/:page' });\n        this.route('settings');\n    });\n\n    this.route('invite-users');\n\n    // this.route('invalid', { path: \"/*path\" });\n\n    this.route('my-sites', function () {\n        this.route('add-image-component');\n    });\n    this.route('dashboard');\n    this.route('massedit', { path: '/massedit/:form/:ids' });\n\n    this.route('send_skatteverket');\n\n    this.route('development', function () {\n        this.route('servicevalidator');\n        this.route('cron');\n        this.route('integrations');\n        this.route('datacreator');\n        this.route('react');\n        this.route('ownreports');\n        this.route('notifications');\n        this.route('smslogs');\n        this.route('functions');\n        this.route('products');\n        this.route('rollock');\n        this.route('activitylog');\n        this.route('ownroles', function () {\n            this.route('role', { path: '/:id' });\n        });\n        this.route('import', function () {\n            this.route('index');\n            this.route('map');\n            this.route('create');\n            this.route('save');\n        });\n    });\n\n    this.route('password', function () {\n        this.route('recovery');\n    });\n\n    this.route('services');\n\n    this.route('admintool', function () {\n        this.route('reports', function () {\n            this.route('bi', function () {\n                this.route('timecleanlog');\n                this.route('findtimeclean');\n            });\n            this.route('featureflags');\n        });\n        this.route('customer', { path: '/customer/:id' }, function () {\n            this.route('overview');\n            this.route('details');\n            this.route('reports', function () {\n                this.route('bills');\n                this.route('users');\n            });\n            this.route('devices', function () {\n                this.route('edit');\n            });\n            this.route('tt3tott4');\n            this.route('charts');\n            this.route('history');\n        });\n        this.route('createservice');\n        this.route('billing');\n    });\n\n    this.route('groups');\n\n    this.route('worktasks', function () {\n        this.route('list');\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n        this.route('view', { path: 'view/:id' });\n        this.route('confirm', { path: 'confirm/:id' });\n        this.route('calendar');\n        this.route('report');\n        this.route('gantt');\n    });\n\n    this.route('messages', function () {\n        this.route('add', function () {\n            this.route('message');\n        });\n        this.route('list');\n        this.route('email-approvals');\n    });\n\n    this.route('mapon');\n\n    this.route('drivinglog', function () {\n        this.route('toggle', function () {\n            this.route('confirm');\n        });\n        this.route('edit', { path: 'edit/:id' });\n    });\n\n    this.route('materiallog', function () {\n        this.route('report');\n        this.route('list');\n        this.route('groups');\n    });\n\n    this.route('multitask', function () {\n        this.route('report');\n    });\n\n    this.route('gpslocation');\n\n    this.route('machines', function () {\n        this.route('transactions');\n        this.route('transactions-history');\n        this.route('transaction', function () {\n            this.route('add');\n            this.route('tooltype', function () {\n                this.route('selected', { path: ':tooltype' });\n            }),\n                this.route('project', function () {\n                    this.route('selected', { path: ':project' });\n                }),\n                this.route('move', { path: 'move/:tooltype/:project' });\n        });\n        this.route('machine');\n        this.route('map');\n        this.route('prices');\n    });\n\n    this.route('salary', function () {\n        this.route('workday-calendar', { path: 'workday' });\n        this.route('export-salary', function () {\n            this.route('add');\n        });\n\n        this.route('custom-export', function () {\n            this.route('edit', { path: ':id' });\n        });\n\n        this.route('custom-export-ad');\n        this.route('salarytypes');\n        this.route('salaryperiods');\n        this.route('export-abcense', function () {\n            this.route('add');\n        });\n    });\n\n    this.route('firecards', function () {\n        this.route('add');\n        this.route('edit', { path: 'edit/:id' });\n    });\n    this.route('test');\n    this.route('vismanetsignin');\n\n    this.route('worksite-areas', function () {\n        this.route('report');\n        this.route('log-report');\n    });\n\n    this.route('nova_costcenters');\n\n    this.route('integrations', function () {\n        this.route('list');\n        this.route('report');\n        this.route('fondionerrors');\n    });\n    this.route('resource-planning', function () {\n        this.route('gantt');\n        this.route('week');\n    });\n    this.route('shift-planning', function () {\n        this.route('gantt');\n        this.route('week');\n    });\n});\n\nexport default Router;\n","import { allSettled } from 'rsvp';\nimport { inject as service } from '@ember/service';\nimport { run } from '@ember/runloop';\nimport Route from '@ember/routing/route';\nimport ApplicationRouteMixin from 'ember-simple-auth/mixins/application-route-mixin';\nimport config from '../config';\nimport { get, set } from '@ember/object';\n\nexport default Route.extend(ApplicationRouteMixin, {\n    analytics: service(),\n    initapp: service(),\n    session: service(),\n    tools: service(),\n    loadTranslations: service(),\n    Collector: service('collector-service'),\n    moment: service(),\n    intl: service(),\n    gps: service(),\n    cordova: service('own-cordova-service'),\n    customerSettings: service(),\n    PushNotification: service(),\n    localStorageWrapper: service(),\n    router: service(),\n    metaService: service('meta'),\n\n    queryParams: {\n        modal: {\n            replace: true,\n        },\n    },\n\n    alldone: false,\n\n    init() {\n        this._super(...arguments);\n\n        //set last used page to ls on transition\n        this.router.on('routeWillChange', (transition) => {\n            if (!get(this, 'session.currentUser.id')) return;\n            let { to: toRouteInfo } = transition;\n            if (toRouteInfo) {\n                if (!get(this, 'session.currentUser.id')) return;\n                let page = toRouteInfo.name;\n                if (Object.keys(toRouteInfo.params).length > 0) {\n                    page = { page: page, param: Object.values(toRouteInfo.params).firstObject };\n                }\n                if (page && config.possibleFirstPages.indexOf(toRouteInfo.name) !== -1) {\n                    get(this, 'localStorageWrapper').setUserSetting('last_page', page);\n                }\n                if (transition.targetName == 'forms.form-report') {\n                    const self = this;\n                    transition.finally(function () {\n                        get(self, 'controller').notifyPropertyChange('path');\n                    });\n                }\n            }\n        });\n\n        this.router.on('routeDidChange', () => {\n            if (this.router.currentRouteName) {\n                // Current route is redirecting from index and will be null on first load\n                if (this.router.currentRouteName === 'login') {\n                    // Translate the meta title and description in login route\n                    get(this, 'metaService').translateMetaTags();\n                } else {\n                    // Overwrite Meta Description to empty and set title to brand name\n                    get(this, 'metaService').updateDescription();\n                    get(this, 'metaService').updateTitle();\n                }\n            }\n        });\n    },\n\n    beforeModel: function (transition) {\n        let cordova = get(this, 'cordova').setup();\n\n        if (!Modernizr.localstorage) {\n            this.transitionTo('error');\n        }\n\n        if (get(this, 'alldone') === false) {\n            transition.abort();\n\n            get(this, 'initapp')\n                .start()\n                .then(() => this._returnAllSettled(transition, cordova))\n                .then(() => this._setThings(transition));\n        }\n    },\n\n    afterModel: function () {\n        if (document.querySelector('#first-time-loader') !== null) {\n            document.querySelector('#first-time-loader').remove();\n        }\n        return set(this, 'intl.locale', moment.locale());\n    },\n\n    actions: {\n        changeLanguage: function (lang) {\n            var self = this;\n            moment.locale(lang);\n            localStorage['lang'] = lang;\n            return get(this, 'loadTranslations')\n                .fetch()\n                .then(() => this._setLang(lang, self));\n        },\n        showModal: function (name, model, variable) {\n            return this.render(name, {\n                into: 'application',\n                outlet: 'modal',\n                model: {\n                    object: model,\n                    variable: variable,\n                },\n            });\n        },\n        removeModal: function () {\n            return run(() =>\n                this.disconnectOutlet({\n                    outlet: 'modal',\n                    parentView: 'application',\n                }),\n            );\n        },\n        bubbleTransition: function (to, params) {\n            this.transitionTo(to, params);\n        },\n    },\n\n    save_first_time_loader_text: function (firstname, lastname) {\n        // while we are here let's save greetings for loading page\n\n        let name = firstname || lastname;\n\n        let str = get(this, 'intl').t('general.welcome');\n        let aphorisms = get(this, 'intl').t('general.aphorisms');\n        if (!str || !aphorisms || !name) {\n            return;\n        }\n        let greeting_arr = str.split('\\n');\n        let aphorisms_arr = aphorisms.split('\\n');\n\n        localStorage['first-time-loader-greeting'] = JSON.stringify({\n            greetings: greeting_arr,\n            name: name,\n            aphorism: aphorisms_arr,\n        });\n    },\n\n    getUserServices: function () {\n        let self = this;\n        let c = get(this, 'Collector');\n        let promise = c.ajax({\n            url: 'me?linkings',\n            headers: {\n                Authorization: 'Bearer ' + get(self, 'session.session.authenticated.access_token'),\n            },\n        });\n        promise.then(function (data) {\n            set(self, 'session.currentUser.services', data);\n        });\n        return promise;\n    },\n\n    sessionInvalidated: function () {\n        if (get(this, 'router.currentRouteName') === 'register.user.confirm') {\n            this.transitionTo('register.user.sign-in');\n        } else {\n            this._super();\n        }\n    },\n    sessionAuthenticated: function () {\n        if (get(this, 'router.currentRouteName') === 'register.user.sign-in') {\n            this.transitionTo('register.user.confirm');\n        } else if (get(this, 'session.modelscreated')) {\n            this._super();\n        } else {\n            this.transitionTo('index');\n        }\n    },\n\n    _returnAllSettled(transition, cordova) {\n        this._super(transition);\n\n        return allSettled([cordova]);\n    },\n    _setThings(transition) {\n        get(this, 'tools').initCurrentMySite();\n        set(this, 'alldone', true);\n        set(this, 'intl.locale', moment.locale());\n\n        if (get(this, 'session.session.authenticated.access_token')) {\n            this.save_first_time_loader_text(\n                get(this, 'session.currentUser.firstname'),\n                get(this, 'session.currentUser.lastname'),\n            );\n            //get(this, \"initapp\").firstPageTransition();\n        }\n        //else\n        transition.retry();\n    },\n    _setLang(lang, self) {\n        return set(get(self, 'intl'), 'locale', lang);\n    },\n});\n\n//export default ApplicationRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/changepassword.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ChangepasswordRoute;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport configurations from '../config';\n\nChangepasswordRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    mySites: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    welcomeTour: Ember.inject.service(),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    resetController: function (controller, isExiting, transition) {\n        controller.set('showModal', true);\n\n        if (isExiting) {\n            controller.set('password_changed', false);\n            controller.set('currentPassword', null);\n            controller.set('password', null);\n            controller.set('passwordAgain', null);\n        }\n\n        return this._super;\n    },\n    startTour: function () {\n        if (!Em.isEmpty(this.get('localStorageWrapper').getUserSetting('tourShown'))) {\n            return;\n        }\n        if (this.get('session.currentUser.password') === 'secured') {\n            return;\n        }\n        return this.get('welcomeTour').start();\n    },\n    actions: {\n        changePassword: function () {\n            var again, c, currentPassword, model, password, promise, userid;\n            currentPassword = this.get('controller.securedPassword')\n                ? this.get('controller.currentPassword')\n                : this.get('session.currentUser.password');\n            password = this.get('controller.password');\n            again = this.get('controller.passwordAgain');\n            if (!currentPassword) {\n                this.set(\n                    'controller.validation_error',\n                    this.get('intl').t('validation.currentpasswordempty'),\n                );\n                return;\n            }\n            if (!password || !again) {\n                this.set(\n                    'controller.validation_error',\n                    this.get('intl').t('validation.passwordempty'),\n                );\n                return;\n            }\n            if (password.length < 8) {\n                this.set(\n                    'controller.validation_error',\n                    this.get('intl').t('validation.passwordlength'),\n                );\n                return;\n            }\n            if (password !== again) {\n                this.set(\n                    'controller.validation_error',\n                    this.get('intl').t('validation.passwordagain'),\n                );\n                return;\n            }\n            this.set('controller.validation_error', null);\n            //everything is ok so let's change the password over api\n            userid = this.get('session.saveUserId');\n            if (userid == null) {\n                alert('changePassword: current user not found');\n                return;\n            }\n            model = this.get('controller.user');\n            model.set('password', password);\n            c = this.get('Collector');\n            this.set('controller.password_changed', true);\n            promise = c.ajax({\n                method: 'POST',\n                url: 'changePassword',\n                data: {\n                    currentPassword: currentPassword,\n                    newPassword: password,\n                },\n            });\n            promise.then(() => {\n                this.set('controller.password_changed', false);\n                this.set('controller.securedPassword', true);\n                model.set('password', 'secured');\n                return this.transitionTo('my-sites').then(() => {\n                    return this.startTour();\n                });\n            });\n            return promise.catch((err) => {\n                this.set('controller.password_changed', false);\n                if (err.payload.error_msg) {\n                    return this.set('controller.validation_error', 'general.error.passwordchanged');\n                } else {\n                    return alert('changePassword: fail ' + err);\n                }\n            });\n        },\n        change: function (value, field) {\n            var model;\n            model = this.get('controller.user');\n            model.set(field, value);\n            return Ember.run.debounce(\n                this,\n                function () {\n                    return model.validate([field]).then(() => {\n                        return this.set(\n                            'controller.' + field + 'Errors',\n                            model.get('errors').errorsFor(field),\n                        );\n                    });\n                },\n                150,\n            );\n        },\n    },\n});\n\nexport default ChangepasswordRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/general-add.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralAddRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport config from '../config/environment';\n\nimport collector from '../classes/collector';\n\nimport toTop from '../mixins/reset-scroll';\n\nimport jQuery from 'jquery';\n\nGeneralAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, toTop, {\n    dialogs: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    controllerName: 'general-add',\n    savedRoute: 'saved',\n    additional_fields: Em.A([]),\n    CollectorService: Ember.inject.service('collector-service'),\n    scroller: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    beforeModel: function () {\n        this._super(...arguments);\n        return this.set('gui.hideMobileHeader', true);\n    },\n    model: function (params) {\n        var records;\n        if (!this.get('modelName')) {\n            return Ember.Object.create({\n                objects: this.get('objects'),\n                values: {},\n                saveAction: this.get('saveAction'),\n            });\n        }\n        if (this.get('edit')) {\n            return this.store.findRecord(this.get('modelName'), params.id, {\n                include: true,\n            });\n        } else {\n            records = this.store.peekAll(this.get('modelName')).filterBy('isNew', true);\n            if (records.get('length') > 0) {\n                return records.get('firstObject');\n            }\n            return this.store.createRecord(this.get('modelName'));\n        }\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        // Reset controller properties'\n        controller.set('errors', Em.A([]));\n        controller.set('spinIsLoading', false);\n        return controller.set('submitted', false);\n    },\n    //        controller.set('fieldSettings.title', true)\n    rowSaved: function (row) {},\n    save_record: function (row) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var children, field, fields, name, obj, promises;\n            promises = [];\n            fields = this.get('Collector').fields(this.get('controller.form'));\n            children = [];\n            for (name in fields) {\n                field = fields[name];\n                if (field.type === 'databasearray' || field.type === 'work_permit_attachment') {\n                    obj = Ember.Object.extend({\n                        fieldsInCommon: Ember.computed.intersect('parentFields', 'childFields'),\n                    }).create({\n                        parentFields: Object.keys(fields),\n                        childFields: Object.keys(this.get('Collector').fields(field.options.form)),\n                    });\n                    row.get(name).forEach((child) => {\n                        obj.get('fieldsInCommon').forEach(function (commonfield) {\n                            return child.set(commonfield, row.get(commonfield));\n                        });\n                        return children.push(child);\n                    });\n                }\n            }\n            if (children.length > 0) {\n                return this.get('CollectorService')\n                    .checkRowValidation(this.get('controller.form'), row, this.get('edit'))\n                    .then(\n                        (resp) => {\n                            promises = children.map(function (child) {\n                                return child.save();\n                            });\n                            return Ember.RSVP.Promise.all(promises).then(() => {\n                                return row.save().then(resolve, reject);\n                            }, reject);\n                        },\n                        (e) => {\n                            this.set('controller.validationMessageData', e.payload);\n                            return reject(e);\n                        },\n                    );\n            } else {\n                return row.save().then(resolve, reject);\n            }\n        });\n    },\n    scrollIfErrors: function () {\n        return Em.run.next(this, function () {\n            if (document.querySelector('.has-error')) {\n                return this.get('scroller').scrollVertical(document.querySelector('.has-error'), {\n                    offset: -70,\n                });\n            }\n        });\n    },\n    actions: {\n        save: function () {\n            var promise, row, self;\n            this.scrollIfErrors();\n            row = this.get('controller.model');\n            if (collector.hasErrors(row.get('constructor.modelName'))) {\n                this.set('controller.spinIsLoading', false);\n                return;\n            }\n            //            if row.saveAction?\n            //                row.saveAction @, row\n            //#                @transitionTo('index')\n            //                return\n            this.set('controller.submitted', false);\n            self = this;\n            if (!this.get('controller.errors') || this.get('controller.errors.length') < 1) {\n                this.set('controller.submitted', true);\n                if (row.saveAction != null) {\n                    row.saveAction(this, row);\n                    return;\n                }\n                //                @transitionTo('index')\n                promise = this.save_record(row);\n                return promise.then(\n                    function () {\n                        var after_save;\n                        self.set('controller.validationMessage', null);\n                        self.rowSaved(row);\n                        after_save = self.get('controller.afterSave');\n                        if (!after_save) {\n                            after_save = self.get('afterSave');\n                        }\n                        if (config.APP.KIOSK) {\n                            after_save = self.get('sharedAfterSave');\n                        }\n                        self.set('controller.spinIsLoading', false);\n                        //savedController = self.get 'savedController'\n\n                        //savedController.set 'model', row\n                        //savedController.set 'afterSave', after_save\n                        return self.transitionTo(self.get('savedRoute')).then(function (newRoute) {\n                            if (self.get('hideFromSaved')) {\n                                newRoute.controller.set('hideFields', self.get('hideFromSaved'));\n                            }\n                            newRoute.controller.set('model', row);\n                            newRoute.controller.set(\n                                'additional_fields',\n                                self.get('additional_fields'),\n                            );\n                            newRoute.controller.set('afterSave', after_save);\n                            if (self.get('controller.addNewLink')) {\n                                newRoute.controller.set(\n                                    'addPageLink',\n                                    self.get('controller.addNewLink'),\n                                );\n                            }\n                            if (self.get('controller.editNewLink')) {\n                                newRoute.controller.set(\n                                    'editPageLink',\n                                    self.get('controller.editNewLink'),\n                                );\n                            }\n                            if (self.get('controller.hideSavedAddLinks')) {\n                                return newRoute.controller.set('hideAddLinks', true);\n                            }\n                        });\n                    },\n                    (back) => {\n                        this.set('controller.submitted', true);\n                        this.set('controller.spinIsLoading', false);\n                        return this.set('controller.validationMessageData', back.errors);\n                    },\n                );\n            } else {\n                self.set('controller.submitted', true);\n                //put button to normal state after error\n                return self.set('controller.spinIsLoading', false);\n            }\n        },\n        cancel: function () {\n            var self;\n            self = this;\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.confirm.cancel'))\n                .then((con) => {\n                    if (con) {\n                        this.get('controller.model').rollbackAttributes();\n                        return window.history.back(-1);\n                    }\n                });\n        },\n        //                if self.get('afterSave') then self.transitionTo(self.get('afterSave')) else self.transitionTo('index')\n        willTransition: function (transition) {\n            if (\n                transition.targetName !== 'users.add.index' &&\n                transition.targetName !== 'register.service.products' &&\n                transition.targetName.substring(0, 9) !== 'users.add'\n            ) {\n                if (\n                    this.get('controller.model') &&\n                    typeof this.get('controller.model').rollbackAttributes === 'function'\n                ) {\n                    this.get('controller.model').rollbackAttributes();\n                }\n                return true;\n            }\n        },\n    },\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            controller.set('message', null);\n            controller.set('validationMessage', null);\n            controller.set('showMessageButton', false);\n            this.set('gui.hideMobileHeader', false);\n        }\n        return this._super(controller, isExiting, transition);\n    },\n});\n\nexport default GeneralAddRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/general-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralReportRoute,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport collector from '../classes/collector';\n\nimport initRoute from '../mixins/init-route';\n\nGeneralReportRoute = Ember.Route.extend(AuthenticatedRouteMixin, initRoute, {\n    localStorageWrapper: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    init: function () {\n        var queryParams;\n        this._super();\n        queryParams = this.get('queryParams');\n        queryParams.page = {\n            refreshModel: true,\n        };\n        queryParams.order = {\n            refreshModel: true,\n        };\n        queryParams.limit = {\n            refreshModel: true,\n        };\n        queryParams.row_info_status = {\n            refreshModel: true,\n        };\n        queryParams.more = {\n            refreshModel: true,\n        };\n        return this.set('queryParams', queryParams);\n    },\n    offset: 0,\n    //    renderTemplate: ->\n    //        @render 'general-report', {controller: @get('parentController')}\n    paramsSet: false,\n    more: null,\n    model: function (params) {\n        var c, fields, form, ls_key_name, page, param, queryParams, split, v, valuefromLS;\n        if (params.limit > 100) {\n            params.limit = 100;\n        } else if (!params.limit) {\n            params.limit = 25;\n        }\n        if (this.get('localStorageKey')) {\n            ls_key_name = this.get('localStorageKey') + '_defaultLimit';\n        } else {\n            ls_key_name = this.get('form') + '_defaultLimit';\n        }\n        valuefromLS = this.get('localStorageWrapper').getUserSetting(ls_key_name);\n        if (!Em.isEmpty(valuefromLS)) {\n            params.limit = valuefromLS;\n        }\n        if (!this.get('paramsSet')) {\n            queryParams = this.get('queryParams');\n            c = this.get('Collector');\n            form = this.get('form');\n            fields = c.fieldArray(form);\n            fields.forEach(function (field) {\n                var ref;\n                if (\n                    (ref = field.type) === 'date' ||\n                    ref === 'database' ||\n                    ref === 'option_values'\n                ) {\n                    return (queryParams[field.name] = {\n                        refreshModel: true,\n                    });\n                }\n            });\n            this.set('queryParams', queryParams);\n            this.set('paramsSet', true);\n        }\n        page = params.page;\n        page = isNaN(page) || page <= 0 ? 1 : Math.floor(page);\n        //        if @get('controller.content.meta.count') > @get('limit')\n        this.set('offset', (page - 1) * params.limit);\n        params.offset = this.get('offset');\n        delete params.page;\n        if (params.status === 'all') {\n            delete params.status;\n        }\n        for (param in params) {\n            v = params[param];\n            if (param.includes('-')) {\n                if (Ember.isPresent(v)) {\n                    split = param.split('-');\n                    if (Ember.isEmpty(params[split[0]])) {\n                        params[split[0]] = {\n                            [`${split[1]}`]: v,\n                        };\n                    }\n                }\n                delete params[param];\n            }\n            if (v === 'null' || v === null || v === 'undefined') {\n                delete params[param];\n            }\n        }\n        if (params.more != null) {\n            params.more.split('|').forEach(function (param) {\n                var splitted;\n                splitted = param.split(':');\n                if (splitted[0].includes('-')) {\n                    if (Ember.isPresent(splitted[1])) {\n                        split = splitted[0].split('-');\n                        if (Ember.isEmpty(params[split[0]])) {\n                            return (params[split[0]] = {\n                                [`${split[1]}`]: splitted[1],\n                            });\n                        }\n                    }\n                } else {\n                    return (params[splitted[0]] = splitted[1]);\n                }\n            });\n            this.set('more', params.more);\n        } else {\n            this.set('more', null);\n        }\n        delete params.more; // just to make sure this doesn't bleed into capi\n        return params;\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        this.set('localStorageKey', controller.localStorageKey);\n        if (this.get('more')) {\n            this.get('more')\n                .split('|')\n                .forEach(function (param) {\n                    var splitted;\n                    splitted = param.split(':');\n                    return controller.set(splitted[0], splitted[1]);\n                });\n        }\n        // there is a high probability that this doesn't work on some report/s\n        /*\n    if controller.get('filters') && Ember.typeOf(controller.get('filters')) is \"array\"\n        for filter in controller.get 'filters'\n            if filter.type != \"searchbox\" && (!controller.get(filter.field) || controller.get(filter.field) == \"null\")\n                if controller.get(filter.field) != null\n                    controller.set filter.field, undefined\n\n    */\n        return controller.setProperties({\n            offset: this.get('offset'),\n        });\n    },\n    actions: {\n        next_date: function () {\n            return this.set(\n                'controller.date',\n                moment(this.get('controller.date')).add(1, 'days').format('YYYY-MM-DD'),\n            );\n        },\n        prev_date: function () {\n            return this.set(\n                'controller.date',\n                moment(this.get('controller.date')).subtract(1, 'days').format('YYYY-MM-DD'),\n            );\n        },\n        showColumn: function (col) {\n            var arr, field, i, key, len, ref, ref1;\n            key = this.get('controller.model').type + '_defaultColumns';\n            this.get('controller.defaultColumns').pushObject(col);\n            this.get('controller.extraColumns').removeObject(col);\n            if (localStorage) {\n                if (localStorage[key]) {\n                    arr = JSON.parse(localStorage[key]);\n                    if (((ref = col.ext), indexOf.call(arr, ref) < 0)) {\n                        arr.push(col.ext);\n                    }\n                    return (localStorage[key] = JSON.stringify(arr));\n                } else {\n                    arr = [];\n                    ref1 = this.get('controller.defaultColumns');\n                    for (i = 0, len = ref1.length; i < len; i++) {\n                        field = ref1[i];\n                        arr.push(field.ext);\n                    }\n                    return (localStorage[key] = JSON.stringify(arr));\n                }\n            }\n        },\n        hideColumn: function (col) {\n            var arr, field, i, key, len, ref;\n            key = this.get('controller.model').type + '_defaultColumns';\n            this.get('controller.defaultColumns').removeObject(col);\n            this.get('controller.extraColumns').pushObject(col);\n            if (localStorage) {\n                arr = [];\n                ref = this.get('controller.defaultColumns');\n                for (i = 0, len = ref.length; i < len; i++) {\n                    field = ref[i];\n                    arr.push(field.ext);\n                }\n                return (localStorage[key] = JSON.stringify(arr));\n            }\n        },\n        status: function (status) {\n            return this.set('controller.status', status);\n        },\n        toggleCalender: function () {\n            return this.toggleProperty('controller.showCalender');\n        },\n    },\n});\n\n//        willTransition: (transition)->\n//            @get('controller.model').every (row) =>\n//                if !row.get('isValid') || row.get('isError') || row.get('hasDirtyAttributes')\n//                    transition.abort()\n//                    @get('dialogs').alert(@get('intl').t('report.alert_unsaved'))\n//                    return\n//            return true\nexport default GeneralReportRoute;\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { typeOf, isEmpty } from '@ember/utils';\n\nimport Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport configurations from '../config';\nimport menu from 'tt4/mixins/menu';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport Ember from 'ember';\n\nconst indexRoute = Route.extend(menu, AuthenticatedRouteMixin, {\n    session: service(),\n    initapp: service(),\n    router: service('router'),\n    localStorageWrapper: service(),\n    PushNotification: service(),\n\n    beforeModel() {\n        get(this, 'PushNotification').setupPermission();\n\n        const isLogged = get(this, 'session.isAuthenticated') ? true : false;\n\n        if (!isLogged) {\n            get(this, 'router').transitionTo('login');\n            return;\n        }\n\n        get(this, 'PushNotification').register();\n\n        // right after login tt4 is logged but not ready .. then we wait that appReady is triggered\n        if (!get(this, 'initapp.appReady')) {\n            return get(this, 'initapp').on('appReady', () => {\n                //console.log(\"ok app now ready .. lets transit\")\n                return this.firstPageTransition();\n            });\n        } else {\n            return this.firstPageTransition();\n        }\n    },\n\n    firstPageTransition() {\n        this.initapp.clearInit();\n\n        if (\n            get(this, 'session.currentUser.password') &&\n            get(this, 'session.currentUser.password') !== 'secured' &&\n            !this.session.session.content.authenticated.scope\n        ) {\n            get(this, 'router').transitionTo('changepassword');\n            return;\n        }\n\n        const firstPage = get(this, 'localStorageWrapper').getUserSetting('last_page');\n        if (Ember.testing && (isEmpty(firstPage) || firstPage === 'dashboard'))\n            return get(this, 'router').transitionTo('my-sites');\n        if (\n            firstPage &&\n            firstPage.length !== 0 &&\n            firstPage !== 'index' &&\n            this.pageInPossibleFirstPages(firstPage)\n        ) {\n            if (typeOf(firstPage) === 'object') {\n                return get(this, 'router').transitionTo(firstPage.page, firstPage.param);\n            } else {\n                return get(this, 'router').transitionTo(firstPage);\n            }\n        } else {\n            return get(this, 'router').transitionTo(this.getMenus()[0].link[0]);\n        }\n    },\n\n    pageInPossibleFirstPages(page) {\n        const searchPage = typeOf(page) === 'object' ? page.page : page;\n        return configurations.possibleFirstPages.indexOf(searchPage) !== -1;\n    },\n});\n\nexport default indexRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/invalid.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar InvalidRoute;\n\nimport Ember from 'ember';\n\nInvalidRoute = Ember.Route.extend({\n    redirect: function () {\n        console.warn('No route for given URL found, redirecting to index route.');\n        return this.transitionTo('index');\n    },\n});\n\nexport default InvalidRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/login/register.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar LoginRegisterRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../general-add';\n\nLoginRegisterRoute = GeneralAddRoute.extend({\n    controllerName: 'login/register',\n    beforeModel: function () {},\n    // overriding beforeModel so authenticatedMixin doesn't move as to /login\n    objects: {\n        firstname: {\n            translation: 'register.firstname',\n            type: 'textbox',\n            features: {},\n        },\n        lastname: {\n            translation: 'register.lastname',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        email: {\n            translation: 'register.email',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n                validate_check: ['email', 'remote:username'],\n            },\n        },\n        password: {\n            translation: 'register.password',\n            type: 'password',\n            features: {\n                mandatory: true,\n                validate_check: ['minLength:8'],\n            },\n        },\n        password_confirm: {\n            translation: 'register.password_confirmation',\n            type: 'password',\n            features: {\n                mandatory: true,\n                validate_check: ['minLength:8', 'match:password'],\n            },\n        },\n        text1: {\n            translation: 'register.company_name',\n            type: 'textbox',\n            features: {},\n        },\n        company: {\n            translation: 'register.company_name',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        vatin: {\n            translation: 'register.company_id',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        phone: {\n            translation: 'register.telephone',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n    },\n    saveAction: function (self, values) {\n        var controller;\n        controller = self.get('controller');\n        return controller.createService(values);\n    },\n    actions: {\n        cancel: function () {\n            return this.transitionTo('index');\n        },\n        willTransition: function () {\n            return true;\n        },\n    },\n});\n\nexport default LoginRegisterRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/massedit.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MasseditRoute;\n\nimport Ember from 'ember';\n\nimport getBack from '../mixins/get-back';\n\nMasseditRoute = Ember.Route.extend(getBack, {\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default MasseditRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/my-sites.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar mySitesRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nmySitesRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    beforeModel: function (transition) {\n        this._super(transition);\n        if (config.APP.KIOSK) {\n            return this.transitionTo('my-sites');\n        }\n    },\n});\n\nexport default mySitesRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterServiceRoute;\n\nimport Ember from 'ember';\n\nimport initmixin from 'tt4/mixins/init-route';\n\nRegisterServiceRoute = Ember.Route.extend(initmixin, {\n    beforeModel: function () {\n        return this.transitionTo('register.service.adddetails');\n    },\n});\n\nexport default RegisterServiceRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service/adddetails.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterAdddetailsRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../general-add';\n\nRegisterAdddetailsRoute = GeneralAddRoute.extend({\n    controllerName: 'register/service/adddetails',\n    session: Em.inject.service(),\n    beforeModel: function () {\n        // overriding beforeModel so authenticatedMixin doesn't move as to /login\n        if (this.get('session.isAuthenticated')) {\n            this.get('session').invalidate();\n        }\n    },\n    objects: {\n        firstname: {\n            translation: 'register.firstname',\n            type: 'textbox',\n            features: {},\n        },\n        lastname: {\n            translation: 'register.lastname',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        email: {\n            translation: 'register.email',\n            type: 'username',\n            features: {\n                mandatory: true,\n                validate_check: ['email', 'remote:username'],\n            },\n            validateOnInit: true,\n        },\n        domain: {\n            translation: 'register.domain',\n            type: 'textbox',\n            features: {},\n            validateOnInit: true,\n        },\n        text1: {\n            translation: 'register.company_name',\n            type: 'textbox',\n            features: {},\n        },\n        company: {\n            translation: 'register.company_name',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        vatin: {\n            translation: 'register.company_id',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        phone: {\n            translation: 'register.telephone',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        country: {\n            name: '',\n            translation: 'register.country',\n            type: 'dropdown_values',\n            features: {\n                mandatory: true,\n            },\n            options: [\n                {\n                    id: 'fi',\n                    value: 'Finland',\n                },\n                {\n                    id: 'se',\n                    value: 'Sweden',\n                },\n                {\n                    id: 'no',\n                    value: 'Norway',\n                },\n                {\n                    id: 'dk',\n                    value: 'Denmark',\n                },\n                {\n                    id: 'uk',\n                    value: 'UK',\n                },\n                {\n                    id: 'us',\n                    value: 'US',\n                },\n            ],\n        },\n        text2: {\n            translation: 'register.promo_title',\n            type: 'textbox',\n            features: {},\n        },\n        promocode: {\n            translation: 'register.promocode',\n            type: 'textbox',\n            features: {},\n        },\n    },\n    saveAction: function (self, values) {\n        var controller;\n        controller = self.get('controller');\n        controller.convertZohoLead(values);\n        return controller.next(values);\n    },\n    resetController: function (controller, transition) {\n        return controller.set('validationstate', Em.Object.create());\n    },\n});\n\nexport default RegisterAdddetailsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service/amounts.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterAmountsRoute;\n\nimport Ember from 'ember';\n\nRegisterAmountsRoute = Ember.Route.extend();\n\nexport default RegisterAmountsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service/done.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterDoneRoute;\n\nimport Ember from 'ember';\n\nRegisterDoneRoute = Ember.Route.extend();\n\nexport default RegisterDoneRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service/products.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterProductsRoute;\n\nimport Ember from 'ember';\n\nRegisterProductsRoute = Ember.Route.extend();\n\nexport default RegisterProductsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/saved.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SavedRoute;\n\nimport Ember from 'ember';\n\nimport toTop from '../mixins/reset-scroll';\n\nSavedRoute = Ember.Route.extend(toTop, {\n    //setupController: (controller, model) ->\n    //    unless controller.get('model')\n    //        @transitionTo('index')\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            return controller.set('hideAddLinks', false);\n        }\n    },\n});\n\n//controller.set 'afterSave', false\nexport default SavedRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/send-skatteverket.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SendSkatteverketRoute;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../mixins/pdf-export';\n\nimport formReport from '../pods/collector/report-comp/component';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSendSkatteverketRoute = Ember.Route.extend(pdfExport, AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    afterModel: function () {\n        return this.sendReport();\n    },\n    sendReport: function () {\n        var c;\n        c = this.get('Collector');\n        return this.getReport().then((report) => {\n            var header, promise;\n            header = this.get('intl').t('pl.skatteverket_emailheader');\n            promise = c.ttapi({\n                url: 'sendReportAsEmail',\n                data: {\n                    to_address: this.get('session.currentUser.email'),\n                    email: report,\n                    header: header.toString(),\n                },\n                method: 'post',\n            });\n            return promise.then(function (ret) {\n                return console.log('done', ret);\n            });\n        });\n    },\n    getReport: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var report;\n            report = formReport.create({\n                store: this.get('store'),\n                Collector: this.get('Collector'),\n                intl: this.get('intl'),\n                rowsPerPage: 'all',\n                form: 'presence',\n                query: [\n                    {\n                        name: 'date',\n                        value:\n                            moment().subtract(3, 'months').format('YYYY-MM-DD') +\n                            '_' +\n                            moment().format('YYYY-MM-DD'),\n                    },\n                ],\n                order: 'date-,out',\n                show_columns:\n                    'date,employer.name,project.name,user.lastname,user.firstname,user.personid,in,out',\n            });\n            return report.get('asPdfElement').then((pdf) => {\n                return this.createPdfFromElements([pdf], 'base64').then((report) => {\n                    return resolve(report);\n                });\n            });\n        });\n    },\n});\n\nexport default SendSkatteverketRoute;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\n\nexport default Route.extend({\n    router: service(),\n    store: service(),\n\n    async model(params) {\n        let data = await get(this, 'store').query(params.form, {\n            id: params.id,\n            sideload: true,\n            'row_info.status': 'all',\n        });\n        return get(data, 'firstObject');\n    },\n\n    setupController(controller, model) {\n        set(controller, 'model', model);\n    },\n\n    actions: {\n        cancel() {\n            window.history.back();\n        },\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/token.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TokenRoute;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nTokenRoute = Ember.Route.extend({\n    queryParams: {\n        url: true,\n    },\n    session: Em.inject.service(),\n    initapp: Em.inject.service(),\n    model: function (params) {\n        var secure;\n        this.get('initapp').clearInit();\n        secure = {\n            authenticated: {\n                authenticator: 'authenticator:collector-auth',\n                access_token: params.token,\n                expires_in: 3600,\n                token_type: 'Bearer',\n                scope: null,\n                expires_at: new Date(new Date().getTime()).getTime(),\n                refresh_token: params.token,\n            },\n        };\n        localStorage['ember_simple_auth-session'] = JSON.stringify(secure);\n        this.transitionTo('loading');\n        // HÄX for refreshing page after we refreshed correct auth in localstorage\n        return Em.run.later(\n            this,\n            function () {\n                this.get('initapp').clearInit();\n                if (params.url) {\n                    location.href = params.url;\n                    return location.reload();\n                } else {\n                    return (location.href = config.rootURL);\n                }\n            },\n            1000,\n        );\n    },\n});\n\nexport default TokenRoute;\n","import { init, BrowserTracing } from '@sentry/browser';\nimport { Ember as EmberIntegration } from '@sentry/integrations/esm/ember';\nimport config from 'tt4/config/environment';\nimport { isArray } from '@ember/array';\n\nexport function startSentry() {\n    if (config.environment !== 'development') {\n        init({\n            ...config.sentry,\n\n            release: config.APP.version,\n\n            integrations: [\n                new EmberIntegration({\n                    onerror: true,\n                    onunhandledrejection: true,\n                }),\n                new BrowserTracing(),\n            ],\n\n            tracesSampleRate: 0.2,\n\n            beforeSend(event, hint) {\n                /*\n                 * if flag sentry-enabled is false, don't send events to sentry\n                 * this is done through event.extra because we cannot access the services/flags from the sentry.js\n                 */\n                if (event && event.extra && !event.extra.sentryIsEnabled) {\n                    return null;\n                }\n\n                const error = hint.originalException;\n                if (error && error.errors && error.errors.error === 'overlap') {\n                    return null;\n                }\n                // https://github.com/emberjs/ember.js/issues/5566\n                if (error && error.message === 'TransitionAborted') {\n                    return null;\n                }\n                if (error && error.error === 'invalid_grant') {\n                    return null;\n                }\n                if (\n                    error &&\n                    error.message ===\n                        'a glimmer transaction was begun, but one already exists. You may have a nested transaction'\n                ) {\n                    return null;\n                }\n                if (\n                    error &&\n                    hint.originalException.payload &&\n                    hint.originalException.payload.error === 'username_in_use'\n                ) {\n                    return null;\n                }\n                if (\n                    error &&\n                    hint.originalException.payload &&\n                    hint.originalException.payload.error === 'username_contains_illegal_characters'\n                ) {\n                    return null;\n                }\n\n                const normalize = (filename) =>\n                    config.sentry.publicUrl + '/assets/' + filename.split('/www/', 2)[1];\n\n                if (\n                    event.exception &&\n                    event.exception.values &&\n                    event.exception.values[0] &&\n                    event.exception.values[0].stacktrace &&\n                    isArray(event.exception.values[0].stacktrace.frames)\n                ) {\n                    event.exception.values[0].stacktrace.frames.forEach((frame) => {\n                        if (frame.filename.includes('/www/')) {\n                            frame.filename = normalize(frame.filename);\n                        }\n                    });\n                    event.culprit = event.exception.values[0].stacktrace.frames[0].filename;\n                }\n\n                return event;\n            },\n        });\n    }\n}\n","define(\"tt4/serializers/-default\", [\"exports\", \"@ember-data/serializer/json\"], function (_exports, _json) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _json.default;\n    }\n  });\n});\n","define(\"tt4/serializers/-json-api\", [\"exports\", \"@ember-data/serializer/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _jsonApi.default;\n    }\n  });\n});\n","define(\"tt4/serializers/-rest\", [\"exports\", \"@ember-data/serializer/rest\"], function (_exports, _rest) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _rest.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/serializers/application.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ApplicationSerializer;\n\nimport RESTSerializer from 'ember-data/serializers/rest';\n\nimport DS from 'ember-data';\n\nimport { pluralize } from 'ember-inflector';\n\nApplicationSerializer = RESTSerializer.extend(DS.EmbeddedRecordsMixin, {\n    attrs: {\n        row_info: {\n            embedded: 'always',\n            serialize: false,\n            deserialize: 'records',\n        },\n    },\n    isNewSerializerAPI: true,\n    extractMeta: function (store, type, payload) {\n        payload.meta = {\n            count: payload.count,\n            additional_meta: payload.meta,\n        };\n        delete payload.count;\n        return this._super(store, type, payload);\n    },\n    serializeIntoHash: function (hash, type, snapshot, options) {\n        var record;\n        this._super(hash, type, snapshot, options);\n        record = snapshot.record;\n        if (record.get('validation') === 'off') {\n            Ember.assign(hash, {\n                validation: record.get('validation'),\n            });\n        }\n        if (record.get('metadata')) {\n            Ember.assign(hash, {\n                meta: record.get('metadata'),\n            });\n            record.set('metadata', null);\n        }\n    },\n    serialize: function (snapshot, options) {\n        var json;\n        json = this._super(snapshot, options);\n        return json;\n    },\n    normalizeQueryResponse: function (store, primaryModelClass, payload, id, requestType) {\n        var camelized, data, i, inPayload, item, len, main, r, record, value;\n        camelized = Ember.String.camelize(primaryModelClass.modelName);\n        main = pluralize(camelized);\n        inPayload = payload[Object.keys(payload)[0]];\n        if (\n            inPayload &&\n            inPayload.length > 0 &&\n            inPayload[0].values &&\n            Object.keys(payload).length === 2\n        ) {\n            data = {};\n            for (item in payload) {\n                value = payload[item];\n                if (item === 'count') {\n                    data[item] = value;\n                    continue;\n                }\n                data[main] = [];\n                for (i = 0, len = value.length; i < len; i++) {\n                    record = value[i];\n                    r = record.values;\n                    r.id = record.id;\n                    data[main].push(r);\n                }\n            }\n            return this._super(store, primaryModelClass, data, id, requestType);\n        } else if (!payload[main]) {\n            data = {};\n            data[main] = [];\n            return this._super(store, primaryModelClass, data, id, requestType);\n        }\n        return this._super(...arguments);\n    },\n});\n\nexport default ApplicationSerializer;\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import RESTSerializer from 'ember-data/serializers/rest';\n\nexport default RESTSerializer.extend();\n","import RESTSerializer from 'ember-data/serializers/rest';\n\nexport default RESTSerializer.extend();\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({\n    keyForAttribute(key) {\n        return key;\n    },\n});\n","import RESTSerializer from 'ember-data/serializers/rest';\n\nexport default RESTSerializer.extend();\n","import RESTSerializer from 'ember-data/serializers/rest';\n\nexport default RESTSerializer.extend();\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\nimport { camelize } from '@ember/string';\n\nexport default DS.JSONAPISerializer.extend({\n    keyForAttribute(key) {\n        return camelize(key);\n    },\n});\n","import DS from 'ember-data';\n\nexport default DS.RESTSerializer.extend();\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","define(\"tt4/services/-ensure-registered\", [\"exports\", \"@embroider/util/services/ensure-registered\"], function (_exports, _ensureRegistered) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _ensureRegistered.default;\n    }\n  });\n});\n","import { merge, assign as _assign } from '@ember/polyfills';\nimport config from '../config/environment';\nimport Service from 'ember-gestures/services/-gestures';\n\nconst assign = _assign || merge;\n\nlet gestures = assign({}, {\n  useCapture: false\n});\ngestures = assign(gestures, config.gestures);\n\nexport default Service.extend({\n  useCapture: gestures.useCapture\n});\n","import Service, { inject as service } from '@ember/service';\nimport FormsService from 'tt4/services/forms';\nimport DS from 'ember-data';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { assert } from '@ember/debug';\nimport { isEmpty } from '@ember/utils';\nimport { get } from '@ember/object';\n\nexport default class CollectorService extends Service {\n    @service private intl!: any;\n    @service private forms!: FormsService;\n    @service private store!: DS.Store;\n\n    constructor() {\n        super(...arguments);\n    }\n\n    public getTranslationForColumn(form: string, fieldName: string, removed: boolean = false) {\n        if (fieldName === 'id') return 'id';\n\n        if (fieldName.substring(0, 9) === 'row_info.') return this.intl.t('general.' + fieldName);\n\n        if (removed) return this.getBestTranslation(form, fieldName);\n\n        const field = this.forms.fields(form)[fieldName];\n\n        if (!field) assert(\"Field '\" + fieldName + \"' not found for form '\" + form + \"'\");\n\n        if (field.hasOwnProperty('name')) return field.name;\n        else return this.getBestTranslation(form, fieldName);\n    }\n\n    public getBestTranslation(form: string, fieldName: string) {\n        const testKeys: string[] = [\n            'report.' + form + '.' + fieldName,\n            'defaults.field.' + fieldName,\n        ];\n\n        const foundKey: string | undefined = testKeys.find((key) => {\n            return this.intl.exists(key);\n        });\n\n        if (foundKey) return this.intl.t(foundKey);\n        else return testKeys[0];\n    }\n\n    public copyRecord(record: IRecord) {\n        const form = get(record, 'constructor.modelName');\n        const jsonRecord: any = record.toJSON();\n        for (const field of ['status']) {\n            if (!isEmpty(jsonRecord[field])) {\n                jsonRecord[field] = null;\n            }\n        }\n\n        record.eachRelationship((key: string, relationship: { kind: string }) => {\n            const relKind = relationship.kind;\n            if (\n                (relKind === 'belongsTo' || relKind === 'hasMany') &&\n                !['export_salary', 'export_absence', 'row_info'].includes(key)\n            ) {\n                if (this.forms.field(form, key).type === 'databasearray') {\n                    const hasManyArr: any = [];\n                    record[key].forEach((hasManyRecord: IRecord) => {\n                        hasManyArr.push(this.copyRecord(hasManyRecord));\n                    });\n                    jsonRecord[key] = hasManyArr;\n                } else {\n                    jsonRecord[key] = record[key];\n                }\n            }\n        });\n\n        return this.store.createRecord(form, jsonRecord);\n    }\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/admintool.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nAdmintoolService = Ember.Service.extend({\n    session: Ember.inject.service(),\n    ajax: function (params) {\n        var self;\n        params.url = config.APP.ADMINTOOLURL + params.url;\n        self = this;\n        params.beforeSend = function (request) {\n            if (Ember.get(self, 'session.session.authenticated.access_token')) {\n                return request.setRequestHeader(\n                    'Authorization',\n                    'Bearer ' + Ember.get(self, 'session.session.authenticated.access_token'),\n                );\n            }\n        };\n        return $.ajax(params);\n    },\n    get: function (path, params) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            if (!params) {\n                params = {};\n            }\n            params.url = path;\n            promise = this.ajax(params);\n            return promise.then(\n                function (data) {\n                    return resolve(data[path] != null ? Em.A(data[path]) : Em.A(data));\n                },\n                function (reason) {\n                    return reject(reason);\n                },\n            );\n        });\n    },\n});\n\nexport default AdmintoolService;\n","define(\"tt4/services/ajax\", [\"exports\", \"ember-ajax/services/ajax\"], function (_exports, _ajax) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _ajax.default;\n    }\n  });\n});\n","import Service, { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nexport default class AnalyticsService extends Service {\n    @service private flags: any;\n    @tracked customData: any[] = [];\n\n    public trackEvent(event: TrackingEvent) {\n        if (typeof window.snowplow === 'function' && this.flags.test('use-snowplow')) {\n            window.snowplow('trackStructEvent', event);\n            // empty customData after tracking\n            this.customData = [];\n        }\n    }\n    // function to init customData (so we can call it from components)\n    public initCustomData() {\n        this.customData = [];\n    }\n}\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\n\n/**\n * Service for handling Android device camera and file operations\n * Provides methods to capture images from camera or gallery and process them\n */\nexport default class AndroidFileService extends Service {\n    @service intl;\n    @service notifications;\n\n    /**\n     * Captures an image from camera or gallery and processes it\n     * @param {string|null} source - 'gallery' for photo library, null for camera\n     * @returns {Promise<Object>} Processed file object ready for upload\n     */\n    async captureImage(source = null) {\n        const options = this.buildCameraOptions(source);\n\n        try {\n            const imageData = await this.getCameraImage(options);\n            return await this.processImageFile(imageData);\n        } catch (error) {\n            // Show error notification to user\n            this.notifications.error(this.intl.t('field.fileupload.camera_error'), {\n                autoClear: true,\n            });\n            throw error;\n        }\n    }\n\n    /**\n     * Builds camera configuration options for Cordova camera plugin\n     * @param {string|null} source - Source type for image capture\n     * @returns {Object} Camera options object\n     * @private\n     */\n    buildCameraOptions(source) {\n        return {\n            allowEdit: false,\n            targetWidth: 1600,\n            targetHeight: 1600,\n            quality: 70, // Image quality 0-100\n            destinationType: window.Camera.DestinationType.FILE_URI,\n            sourceType: source === 'gallery'\n                ? window.Camera.PictureSourceType.PHOTOLIBRARY\n                : window.Camera.PictureSourceType.CAMERA,\n            mediaType: window.Camera.MediaType.PICTURE,\n            correctOrientation: true, // Auto-rotate based on device orientation\n            encodingType: 0, // JPEG format\n        };\n    }\n\n    /**\n     * Captures image using Cordova camera plugin\n     * Wraps callback-based API into Promise for async/await usage\n     * @param {Object} options - Camera configuration options\n     * @returns {Promise<string>} File URI of captured image\n     * @private\n     */\n    async getCameraImage(options) {\n        return new Promise((resolve, reject) => {\n            navigator.camera.getPicture(resolve, reject, options);\n        });\n    }\n\n    /**\n     * Processes the captured image file and prepares it for upload\n     * @param {string} imageData - File URI from camera\n     * @returns {Promise<Object>} File object with blob, name, and type\n     * @private\n     */\n    async processImageFile(imageData) {\n        const fileEntry = await this.resolveFileSystemURL(imageData);\n        const file = await this.getFileFromEntry(fileEntry);\n\n        // Set proper MIME type and generate unique filename\n        file.type = 'image/jpeg';\n        file.name = file.name.replace(\n            'image.',\n            'image' + moment().format('YYYY-MM-DD-HH-mm-ss') + '.'\n        );\n\n        return {\n            blob: file,\n            name: file.name,\n            type: file.type,\n        };\n    }\n\n    /**\n     * Resolves file system URL to file entry\n     * Wraps callback-based API into Promise\n     * @param {string} url - File system URL\n     * @returns {Promise<Object>} File entry object\n     * @private\n     */\n    async resolveFileSystemURL(url) {\n        return new Promise((resolve, reject) => {\n            window.resolveLocalFileSystemURL(url, resolve, reject);\n        });\n    }\n\n    /**\n     * Gets file object from file entry\n     * Wraps callback-based API into Promise\n     * @param {Object} fileEntry - File entry from file system\n     * @returns {Promise<Object>} File object with metadata\n     * @private\n     */\n    async getFileFromEntry(fileEntry) {\n        return new Promise((resolve, reject) => {\n            fileEntry.file(resolve, reject);\n        });\n    }\n}\n\n","// noinspection TypeScriptValidateTypes\n\nimport Service, { inject as service } from '@ember/service';\nimport { assert } from '@ember/debug';\n\n/**\n * Handles all operations that have to do with calling different apis\n *\n * ```js\n * @service apiservice;\n * this.apiservice.request(<backendName>, <url>, <method>, <body>)\n * ```\n *\n * @class ApiserviceService\n * @constructor\n * @public\n */\n\nexport default class ApiserviceService extends Service {\n    @service private session!: any;\n    @service private ttapi!: any;\n    @service private capi!: any;\n\n    /**\n     * Make api request using backendName, url, body and method given\n     * EXAMPLE: await this.apiservice.request('capi', '/worktime/:id', 'PUT', {worktime: {locked: true}})\n     * EXAMPLE2: await this.apiservice.request('ttapi', '/sendReportAsEmail', 'POST', {to: 'test@mail.com', lang: 'fi'})\n     * @method request\n     * @param {String} backendName\n     * @param {String} url\n     * @param {object} data\n     * @param {string} method\n     */\n    public async request(\n        backendName: string,\n        url: string,\n        method: string = 'GET',\n        data: object = {},\n    ) {\n        let callUrl: unknown = '';\n        switch (backendName) {\n            case 'ttapi':\n                callUrl = this.ttapi.host;\n                break;\n            case 'capi':\n                callUrl = this.capi.host;\n                break;\n            default:\n                assert('Invalid backend name (options ttapi, capi)');\n        }\n\n        assert('You need to pass url to request method', url);\n\n        try {\n            const requestData: any = {\n                headers: {\n                    Authorization: 'Bearer ' + this.session.data.authenticated.access_token,\n                    'Content-Type': 'application/json',\n                },\n                method,\n            };\n            if (Object.keys(data).length > 0) requestData.body = JSON.stringify(data);\n            // @ts-ignore: Ignore import of compiled template\n            callUrl = callUrl.slice(-1) === '/' ? callUrl.slice(0, -1) : callUrl;\n            return await fetch(callUrl + url, requestData);\n        } catch (e) {\n            throw new Error(e);\n        }\n    }\n}\n","/* eslint-disable */\nimport Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Service.extend({\n  store: service(),\n  session: service(),\n  Collector: service('collector-service'),\n  ttapi: service(),\n  capi: service(),\n\n  async checkAndSetAutopause() {\n    if (!this.get('Collector').testNeedsOne('products.worktimegroup')) {\n        if (this.get('Collector').testNeedsOne('products.autopause')) {\n            let settings = await this.getSetting(null);\n            if (settings) {\n                settings.set('value', 0);\n                await settings.save();\n            }\n        } else {\n            return;\n        }\n        return;\n    }\n\n    try {\n      // Fetch all worktime groups\n      let response = await get(this, 'capi').request('user/worktimegroups');\n\n      // Extract the worktimegroups array from the response\n      let worktimeGroups = response.worktimegroups;\n\n      // Check if worktimeGroups is an array\n      if (!Array.isArray(worktimeGroups)) {\n        throw new Error('Invalid worktimeGroups format');\n      }\n\n      // Loop through each worktime group\n      for (let worktimeGroup of worktimeGroups) {\n        let worktimeGroupId = worktimeGroup.id;\n\n        // Check if autopause is on for the worktime group\n        const isAutopauseOn = await this.checkIfAutopauseIsOnForWorktimeGroup(worktimeGroupId);\n\n        if (isAutopauseOn) {\n          // Fetch the settings for the current worktime group\n          let settings = await this.getSetting(worktimeGroupId);\n\n          if (settings) {\n            // Set the pause value to 0 if autopause is on\n            settings.set('value', 0);\n            await settings.save();\n          }\n        }\n      }\n\n      // Handle the default case where worktimegroup is not set\n      const isAutopauseOn = await this.checkIfAutopauseIsOnForWorktimeGroup(null);\n      if (isAutopauseOn) {\n        let settings = await this.getSetting(null);\n        if (settings) {\n          settings.set('value', 0);\n          await settings.save();\n        }\n      }\n\n    } catch (error) {\n      console.error('Error checking autopause status:', error);\n    }\n  },\n\n  async checkIfAutopauseIsOnForWorktimeGroup(worktimegroupId) {\n    const url = worktimegroupId ? `forms?user.worktimegroup=${worktimegroupId}` : 'forms?user';\n    const response = await get(this, 'Collector').ajax({ url });\n    return response.updater && Array.isArray(response.updater.products) && response.updater.products.includes('autopause');\n  },\n\n  async getSetting(worktimegroupId) {\n    let condition = worktimegroupId ? `$userProfile->worktimegroup==${worktimegroupId}` : '';\n    let settingParams = {\n      name: 'default_value',\n      value: 0, // Ensure the value is set to 0 by default\n      condition: condition\n    };\n\n\n    if (!worktimegroupId) {\n      settingParams.condition = '';\n    }\n\n    const configs = {\n      form: 'worktime',\n      field: 'pause',\n      setting: settingParams\n    };\n\n    const forms = await this.store.findAll('form', { reload: true });\n    const form = forms.filterBy('external_type', configs.form).get('firstObject');\n    if (form) {\n      const field = form.fields.filterBy('external_type', configs.field).get('firstObject');\n      if (field) {\n        const setting = field.settings.filterBy('name', configs.setting.name).find(item => {\n          if (worktimegroupId) {\n            const arr = item.condition ? item.condition.split('==') : [];\n            return arr.length > 1 && arr[1] == worktimegroupId;\n          } else {\n            return item.condition === '';\n          }\n        });\n\n        return setting || this.store.createRecord('form-field-setting', configs.setting);\n      }\n    }\n    return null;\n  }\n});\n\n\n","import { Promise as EmberPromise } from 'rsvp';\nimport Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Service.extend({\n    ajax: service(),\n    capi: service(),\n\n    sendFile(filename, contentType, content) {\n        return new EmberPromise((resolve) => {\n            get(this, 'capi')\n                .request('/awsurl?filename=' + filename + '&contentType=' + contentType)\n                .then((url) => this._ajaxRequest(url, contentType, content))\n                .then(() => resolve());\n        });\n    },\n\n    _ajaxRequest(url, contentType, content) {\n        get(this, 'ajax').request(url, {\n            type: 'put',\n            // Content type must much with the parameter you signed your URL with\n            contentType: contentType,\n            // this flag is important, if not set, it will try to send data as a form\n            processData: false,\n            // the actual file is sent raw\n            data: content,\n            dataType: 'text',\n            beforeSend: function (jqXHR) {\n                jqXHR.overrideMimeType('text/csv;charset=iso-8859-1');\n            },\n        });\n    },\n});\n","import { computed, get } from '@ember/object';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport { inject } from '@ember/service';\nimport config from 'tt4/config/environment';\n\nexport default AjaxService.extend({\n    session: inject(),\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n            const authToken = get(this, 'session.session.authenticated.access_token');\n            if (authToken) {\n                headers['Authorization'] = 'Bearer ' + authToken;\n            }\n            return headers;\n        },\n    }),\n    host: config.APP.BLOCKS_URL,\n});\n","import { A } from '@ember/array';\nimport { isPresent } from '@ember/utils';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport EmberObject, { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport config from 'tt4/config/environment';\n\n// const {inject: {service}, get, Object, ObjectProxy, PromiseProxyMixin, isPresent, A} = Ember;\n\nexport default AjaxService.extend({\n    flags: service(),\n    collector: service('collector-service'),\n    session: service(),\n\n    host: computed('session.currentUser.partnerid', function () {\n        if (config.environment !== 'development' && get(this, 'flags').test('capi_url'))\n            return get(this, 'flags').test('capi_url');\n        else return config.APP.COLLECTOR_API_URL;\n    }),\n\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n            let token = get(this, 'session.session.authenticated.access_token');\n            headers['Authorization'] = 'Bearer ' + token;\n            return headers;\n        },\n    }),\n    findAll(form, params = {}) {\n        const promiseObject = ObjectProxy.extend(PromiseProxyMixin);\n        const c = get(this, 'collector');\n        const pluralForm = c.pluralize(form);\n        return promiseObject.create({\n            promise: this.request(pluralForm, { data: params }).then((data) =>\n                this._returnData(form, data, params, c, pluralForm),\n            ),\n        });\n    },\n    _returnData(form, data, params, c, pluralForm) {\n        let rows = [];\n        if (isPresent(params.sideload)) {\n            rows = c.injectSideload(pluralForm, data);\n        } else if (isPresent(data[form])) {\n            rows = A(data[form]);\n        } else {\n            rows = A(data[pluralForm]);\n        }\n        const EmberRows = A([]);\n\n        rows.forEach((row) => EmberRows.pushObject(EmberObject.create(row)));\n\n        return {\n            content: EmberRows,\n            meta: { count: get(data, 'count') },\n        };\n    },\n});\n","import { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport config from 'tt4/config/environment';\n\n// const {inject: {service}, get, Object, ObjectProxy, PromiseProxyMixin, isPresent, A} = Ember;\n\nexport default AjaxService.extend({\n    session: service(),\n    flags: service(),\n\n    host: computed(function () {\n        if (config.environment !== 'development' && get(this, 'flags').test('cc-url'))\n            return get(this, 'flags').test('cc-url') + '/trigger';\n        return config.APP.CC_URL;\n    }),\n\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n            let token = get(this, 'session.session.authenticated.access_token');\n            headers['Authorization'] = 'Bearer ' + token;\n            return headers;\n        },\n    }),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/cdn.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CdnService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nCdnService = Ember.Service.extend({\n    url: function (url) {\n        var base;\n        base = config.APP.CDN_URL;\n        if (\n            base.substring(base.length - 1, base.length) !== '/' &&\n            url.substring(url.length - 1, url.length) !== '/'\n        ) {\n            base += '/';\n        }\n        return base + url;\n    },\n});\n\nexport default CdnService;\n","define(\"tt4/services/clock\", [\"exports\", \"ember-cli-clock/services/clock\"], function (_exports, _clock) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _clock.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/collector-service.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar collectorService,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport localization from '../classes/localization';\n\nimport config from '../config/environment';\n\nimport DS from 'ember-data';\n\nimport validator from '../classes/validations';\n\nimport { get } from '@ember/object';\n\nimport { sanitize } from 'dom-purify';\n\nimport { isArray } from '@ember/array';\n\nimport { getImageFromUrl, resizeImage } from 'tt4/utils/file-util';\n\nimport $ from 'jquery';\n\nimport { singularize, pluralize } from 'ember-inflector';\n\nimport { decamelize } from '@ember/string';\n\ncollectorService = Ember.Service.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    routing: Ember.inject.service('-routing'),\n    customerSettings: Ember.inject.service(),\n    userSettings: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    ttapiService: Ember.inject.service('ttapi'),\n    flags: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    addProducts: function (products, worktimegroup = null, is_addition_type = false) {\n        var d, params, ret;\n        //if products.get(\"firstObject\") is \"rfid\"\n        //company_name = @get('session.currentUser.company_info.company_name')\n        //email_country = @get('session.currentUser.company_info.country')\n        //email_content = @get('intl').t(\"general.\"+email_country+\"_nfc_content\")+\"<br><br/>\"+@get('intl').t(\"general.\"+email_country+\"_nfc_customer_info\")+\":<br/>\"+@get('session.currentUser.company_info.company_contact_person')+\"<br>\"+@get('session.currentUser.company_info.company_email')+\"<br>\"+@get('session.currentUser.company_info.company_phone');\n        //email_header = @get('intl').t(\"general.\"+email_country+\"_nfc_header\")\n        //promise = @ttapi\n        //    url: \"sendNfcEmail\"\n        //    data:\n        //        content: email_content.replace(\"{customer}\",company_name)\n        //        header: email_header.string.replace(\"{customer}\",company_name)\n        //        country: email_country\n        //    method: 'post'\n        d = $.Deferred();\n        params = {\n            url: 'service/products',\n            data: JSON.stringify({\n                'service/product': {\n                    products: products,\n                },\n                worktimegroup: worktimegroup,\n                is_addition_type: is_addition_type,\n            }),\n            type: 'POST',\n            contentType: 'application/json',\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        };\n        ret = this.ajax(params);\n        ret.then(\n            function (ret) {\n                var j, len, prods, product;\n                console.info('Adding products succeeded with content', ret);\n                if (collector.products) {\n                    prods = collector.products;\n                } else {\n                    prods = [];\n                }\n                for (j = 0, len = products.length; j < len; j++) {\n                    product = products[j];\n                    prods.push(product);\n                }\n                collector.products = prods;\n                return d.resolve(ret);\n            },\n            function (e) {\n                console.error('Adding products failed', e);\n                return d.reject(e);\n            },\n        );\n        return d;\n    },\n    addProduct: function (product, worktimegroup = null, is_addition_type = false) {\n        return this.addProducts([product], worktimegroup, is_addition_type);\n    },\n    removeProduct: function (product, worktimegroup = null, is_addition_type = false) {\n        var d, params, ret;\n        d = $.Deferred();\n        // when removing product without worktimegroup we add ?safe=true param so backend will prevent removing if it is on for some specific worktimegroup\n        params = {\n            url:\n                'service/products/' +\n                product +\n                (worktimegroup ? '?worktimegroup=' + worktimegroup : '?safe=true') +\n                (is_addition_type ? '&is_addition_type=true' : ''),\n            type: 'DELETE',\n            contentType: 'application/json',\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        };\n        ret = this.ajax(params);\n        ret.then(\n            function (ret) {\n                var j, len, old_prod, prods, prods_now;\n                console.info('Removing product succeeded with content', ret);\n                d.resolve(ret);\n                prods = collector.products;\n                prods_now = [];\n                for (j = 0, len = prods.length; j < len; j++) {\n                    old_prod = prods[j];\n                    if (old_prod !== product) {\n                        prods_now.push(old_prod);\n                    }\n                }\n                return (collector.products = prods_now);\n            },\n            function (e) {\n                return console.error('Removing product failed', e);\n            },\n        );\n        return d;\n    },\n    setProducts: function (\n        products,\n        worktimegroup = null,\n        force = false,\n        is_addition_type = false,\n    ) {\n        var j, len, p, product, ret;\n        console.log('setProducts: ', products, worktimegroup, force);\n        ret = [];\n        for (j = 0, len = products.length; j < len; j++) {\n            product = products[j];\n            if (product.substring(0, 1) === '!') {\n                product = product.substring(1);\n                if (this.productExists(product) || force) {\n                    p = this.removeProduct(product.substring(9), worktimegroup, is_addition_type);\n                    ret.push(p);\n                }\n            } else {\n                if (!this.productExists(product) || force) {\n                    console.log('add');\n                    p = this.addProduct(product.substring(9), worktimegroup, is_addition_type);\n                    ret.push(p);\n                }\n            }\n        }\n        return ret;\n    },\n    products: Em.computed(function () {\n        return collector.products;\n    }),\n    fields: function (form) {\n        if (!form) {\n            return;\n        }\n        form = form.decamelize();\n        form = form.underscore();\n        if (collector.forms == null) {\n            return null;\n        }\n        if (!(form in collector.forms)) {\n            throw new Ember.Error(\"collectorService fields: form '\" + form + \"' not found\");\n        }\n        return collector.forms[form].objects;\n    },\n    fieldArray: function (form, filter = false) {\n        var field, fields, j, len, name, ret;\n        fields = this.fields(form);\n        ret = [];\n        if (filter) {\n            for (j = 0, len = filter.length; j < len; j++) {\n                name = filter[j];\n                if (fields[name] == null) {\n                    continue;\n                }\n                field = fields[name];\n                ret.push({\n                    form: form,\n                    name: name,\n                    translated_name: this.getTranslationForColumn(form, name),\n                    type: field.type,\n                    options: field.options,\n                    features: field.features,\n                });\n            }\n        } else {\n            for (name in fields) {\n                field = fields[name];\n                ret.push({\n                    form: form,\n                    name: name,\n                    translated_name: this.getTranslationForColumn(form, name),\n                    type: field.type,\n                    options: field.options,\n                    features: field.features,\n                });\n            }\n        }\n        return ret;\n    },\n    field: function (form, fieldName) {\n        var field, ret;\n        field = this.formField(form, fieldName);\n        ret = {\n            form: form,\n            name: fieldName,\n            translated_name: this.getTranslationForColumn(form, fieldName),\n            type: field.type,\n            options: field.options,\n            features: field.features,\n        };\n        return ret;\n    },\n    formField: function (form, field) {\n        return this.fields(form)[field];\n    },\n    uses_mongo: function (form) {\n        if (!form) {\n            return;\n        }\n        form = form.decamelize();\n        form = form.underscore();\n        if (collector.forms == null) {\n            return null;\n        }\n        if (!(form in collector.forms)) {\n            throw new Ember.Error(\"collectorService fields: form '\" + form + \"' not found\");\n        }\n        return collector.forms[form].uses_mongo;\n    },\n    forms: function () {\n        return collector.forms;\n    },\n    productExists: function (product) {\n        var products, ref, split;\n        products = collector.products;\n        if (products) {\n            if (product === 'products') {\n                return true;\n            }\n            split = product.split('.');\n            return (ref = split[1]), indexOf.call(products, ref) >= 0;\n        }\n        return false;\n    },\n    getProducts: function () {\n        return collector.products;\n    },\n    moduleExists: function (module) {\n        var modules, ref, split;\n        modules = collector.modules;\n        if (modules) {\n            if (module === 'modules') {\n                return true;\n            }\n            split = module.split('.');\n            return (ref = split[1]), indexOf.call(modules, ref) >= 0;\n        }\n        return false;\n    },\n    formExists: function (name) {\n        if (!collector.forms) {\n            return;\n        }\n        return name in collector.forms;\n    },\n    fieldExists: function (form, name) {\n        if (!this.formExists(form)) {\n            return false;\n        }\n        return name in collector.forms[form].objects;\n    },\n    hasErrors: function (form) {\n        if (!this.formExists(form)) {\n            return false;\n        }\n        if (collector.forms[form].errors) {\n            return true;\n        }\n    },\n    feature: function (form, field, name) {\n        var features, fields;\n        if (!this.formExists(form)) {\n            return null;\n        }\n        fields = this.fields(form);\n        if (fields[field] == null) {\n            return false;\n        }\n        if (fields[field].features == null) {\n            return false;\n        }\n        features = fields[field].features;\n        if (!(name in features)) {\n            return false;\n        }\n        return features[name];\n    },\n    privilege: function (form, privilege) {\n        if (!this.formExists(form)) {\n            return null;\n        }\n        return collector.forms[form].privileges[privilege];\n    },\n    inverseNeeds: function (array) {\n        var item, item_arr, j, l, len, len1, need, ret, split_need;\n        ret = [];\n        for (j = 0, len = array.length; j < len; j++) {\n            need = array[j];\n            split_need = need.split('||');\n            item_arr = [];\n            for (l = 0, len1 = split_need.length; l < len1; l++) {\n                item = split_need[l];\n                if (item.substring(0, 1) === '!') {\n                    item = item.substring(1);\n                } else {\n                    item = '!' + item;\n                }\n                item_arr.push(item);\n            }\n            need = item_arr.join('||');\n            ret.push(need);\n        }\n        return ret;\n    },\n    needsOfArray: function (array) {\n        return Em.A(array).filter((item) => {\n            if (!('needs' in item)) {\n                return true;\n            }\n            return this.testNeeds(item.needs);\n        });\n    },\n    testNeeds: function (need_array) {\n        var all_ok, debug, debugText, inverse, j, l, len, len1, need, ok, split_need;\n        if (!Em.isArray(need_array)) {\n            Ember.assert('You need to provide an array to testNeeds function');\n        }\n        // Property for setting the main OK. This is false if atleast ONE need fails.\n        all_ok = true;\n        // If we don't have anything to test then just return all_ok\n        if (Em.isEmpty(need_array)) {\n            return all_ok;\n        }\n        debugText = '';\n        debug = Em.A(need_array).find(function (item) {\n            return item === 'debug';\n        });\n        // Test every need in the array\n        for (j = 0, len = need_array.length; j < len; j++) {\n            need = need_array[j];\n            // We try to split needs because we might have OR (||) needs.\n            // This works because split always returns array.\n            split_need = typeof need === 'string' ? need.split('||') : [need];\n            // We set the initial OK value to false before we start testing the need.\n            // When we loop OR needs we can just check if OK is true and skip checking the rest.\n            ok = false;\n            if (need === 'debug') {\n                continue;\n            }\n            for (l = 0, len1 = split_need.length; l < len1; l++) {\n                need = split_need[l];\n                // If ok is true we don't need to test splitted values anymore\n                if (ok) {\n                    continue;\n                }\n                if (typeof need === 'string') {\n                    // See if we have inverse, ie. the string starts with \"!\" character\n                    inverse = need.substring(0, 1) === '!';\n                    if (inverse) {\n                        // If we have inverse we need to cut the \"!\" from the start of the string\n                        need = need.substring(1);\n                    }\n                }\n                // Test the need\n                ok = this.testNeedsOne(need);\n                if (inverse) {\n                    // If we have inverse (!) we switch the OK statement\n                    ok = !ok;\n                }\n                if (debug) {\n                    debugText += (inverse ? '!' : '') + need + '=' + ok + '||';\n                }\n            }\n            if (debug) {\n                debugText = debugText.substring(0, debugText.length - 2);\n                if (!ok) {\n                    debugText += ' => all_ok to false';\n                }\n                if (debug) {\n                    debugText += '\\n';\n                }\n            }\n            if (!ok) {\n                // Set the main OK to false if THIS need check fails.\n                all_ok = false;\n            }\n        }\n        if (debug) {\n            debugText = debugText + '\\nall_ok => ' + all_ok;\n            console.debug(debugText);\n        }\n        return all_ok;\n    },\n    testNeedsOne: function (need) {\n        var field, fieldandsetting, form, ok, ref, setting, split, userlevels, values;\n        if (need === 'hide') {\n            ok = false;\n        } else if (typeof need === 'function') {\n            ok = need();\n        } else if (need === 'mobileView') {\n            ok = window.innerWidth <= 768;\n        } else if (need.substring(0, 9) === 'userlevel') {\n            split = need.split('=');\n            userlevels = this.addLoadProfilesForUserlevels(split[1].split(','));\n            if (!this.get('session.currentUser')) {\n                console.info(\n                    \"Needs cannot be tested for 'userlevel' because current user isn't loaded\",\n                );\n                ok = indexOf.call(userlevels, '1') >= 0;\n            } else {\n                ok = ((ref = '' + this.getUserlevel()), indexOf.call(userlevels, ref) >= 0);\n            }\n        } else if (need === 'devMode') {\n            ok = config.APP.devMode;\n            // check if we are in devmode\n        } else if (need === 'development') {\n            ok = Ember.devModeOn === true;\n        } else if (need.includes('formFeature')) {\n            values = need.split('.');\n            ok = this.testFormFeature(values[0], values[2]);\n            // check if service has product\n        } else if (need.substring(0, 8) === 'products') {\n            ok = this.productExists(need);\n            // check if service has module\n        } else if (need.substring(0, 7) === 'modules') {\n            ok = this.moduleExists(need);\n            // modulecontrol check\n        } else if (need.substring(0, 14) === 'modulecontrol.') {\n            ok = this.testModuleControl(need.split('.')[1]);\n            // modulecontrol check\n        } else if (need.startsWith('flag.')) {\n            ok = this.testFlag(need.split('.')[1]);\n            // check for session.currentUser.field\n        } else if (need.substring(0, 15) === 'userfieldcheck.') {\n            ok = this.testCurrentUserField(need.split('.')[1]);\n        } else if (need.substring(0, 14) === 'serviceCountry') {\n            ok = this.testServiceCountry(need.split('@')[1]);\n            // customer settings check\n        } else if (need.substring(0, 15) === 'customersetting') {\n            ok = this.get('customerSettings').checkSetting(need.split('.')[1]);\n            // check form field privilege\n        } else if (need.indexOf('@') !== -1 && need.indexOf('.') !== -1) {\n            [form, fieldandsetting] = need.split('.');\n            [field, setting] = fieldandsetting.split('@');\n            ok = this.feature(form, field, setting);\n            // check form privilege\n        } else if (need.indexOf('@') !== -1) {\n            split = need.split('@');\n            split[0] = decamelize(split[0]);\n            if (split[1] === 'errors') {\n                ok = this.hasErrors(split[0]);\n            } else {\n                ok = this.privilege(split[0], split[1]);\n            }\n            // check form field existance\n        } else if (need.indexOf('.') !== -1) {\n            split = need.split('.');\n            ok = this.fieldExists(split[0], split[1]);\n        } else if (need === 'tt3') {\n            return collector.get('tt3flag');\n        } else if (need === 'userHasSaldos') {\n            ok = this.get('userSettings.hasSaldos');\n        } else if (need === 'passwordDisabled') {\n            ok = this.session.currentUser?.disable_login;\n        } else {\n            ok = this.formExists(need);\n        }\n        return ok;\n    },\n    addLoadProfilesForUserlevels: function (userlevels) {\n        var addThese, ret;\n        addThese = [];\n        ret = userlevels.map(function (userlevel) {\n            var trimmed;\n            if (userlevel.substring(userlevel.length - 1, userlevel.length) === '?') {\n                trimmed = userlevel.substring(0, userlevel.length - 1);\n                addThese = trimmed;\n                return trimmed;\n            } else {\n                return userlevel;\n            }\n        });\n        if (addThese.length > 0) {\n            // this should be maybe loaded somehow from other forms also .. but this works for clockcard\n            // which is the only thing using this userlevel=1? syntax for now\n            if (\n                this.feature('worktime', 'user', 'load_profile') ||\n                this.privilege('worktime', 'limited_access')\n            ) {\n                ret.push('' + this.getUserlevel());\n            }\n        }\n        return ret;\n    },\n    testCurrentUserField: function (value) {\n        var session, user_field;\n        if (this.getUserlevel() === 5) {\n            return true;\n        }\n        if (!this.get('session.currentUser')) {\n            Ember.assert(\n                \"Needs cannot be tested for 'userfieldcheck' because current user isn't loaded\",\n            );\n            return false;\n        }\n        session = this.get('session');\n        user_field = session.get('currentUser.' + value);\n        if (user_field) {\n            return true;\n        } else if (!this.fieldExists('user', value)) {\n            return true;\n        }\n    },\n    testModuleControl: function (needed_module) {\n        var module_controls;\n        if (this.getUserlevel() === 5) {\n            return true;\n        }\n        if (!this.fieldExists('user', 'module_controls')) {\n            return true;\n        }\n        module_controls = this.get('session.currentUser.module_controls');\n        if (!module_controls) {\n            return false;\n        }\n        return indexOf.call(module_controls, needed_module) >= 0;\n    },\n    testFlag: function (name) {\n        return this.get('flags').test(name);\n    },\n    testServiceCountry: function (country) {\n        var company_country;\n        company_country = this.get('session.currentUser.company_info.country');\n        if (!company_country) {\n            return false;\n        }\n        return country === company_country;\n    },\n    testFormFeature: function (form, feature) {\n        var arr, formFeatures, invertNeeds;\n        arr = [];\n        invertNeeds = form.includes('!');\n        form = invertNeeds ? form.substr(1) : form;\n        if (!this.forms()[form]) {\n            return false;\n        }\n        formFeatures = this.forms()[form].features;\n        if (!formFeatures) {\n            return false;\n        }\n        Object.values(formFeatures).forEach((values) => {\n            if (!isArray(values)) {\n                return arr.push(values);\n            } else {\n                return values.forEach((value) => {\n                    return arr.push(value);\n                });\n            }\n        });\n        if (invertNeeds) {\n            return !arr.includes(feature);\n        } else {\n            return arr.includes(feature);\n        }\n    },\n    /*\n  Get array of records.\n\n  Returns promise and when resolved array of records.\n\n  form: record type\n  ids: array of row ids\n  preLoad: if you can assume there isn't usually over 100 records this will reduce needed request count\n\n  */\n    getRecordArray: function (form, ids, preLoad = false) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var getRecords, store;\n            store = this.get('store');\n            getRecords = function () {\n                var id, j, len, promise, promises, record, records;\n                promises = [];\n                records = [];\n                for (j = 0, len = ids.length; j < len; j++) {\n                    id = ids[j];\n                    record = store.peekRecord(form, id);\n                    if (record) {\n                        records.push(record);\n                    } else {\n                        promise = store.findRecord(form, id);\n                        promise.then(function (record) {\n                            return records.push(record);\n                        });\n                    }\n                    promises.push(promise);\n                }\n                return Ember.RSVP.Promise.all(promises).then(function () {\n                    return resolve(records);\n                });\n            };\n            // call for preload only if first object is not found from store\n            // (prevents calling server every time this funciton called)\n            if (preLoad && !store.peekRecord(form, ids[0])) {\n                return store.findAll(form).then(() => {\n                    return getRecords();\n                });\n            } else {\n                return getRecords();\n            }\n        });\n    },\n    getProductByName: function (product) {\n        var params, promise;\n        if (this.get('product_list')) {\n            return this.get('product_list').findBy('name', product);\n        }\n        if (this.get('product_list_fetcher')) {\n            return this.get('product_list_fetcher');\n        }\n        params = {\n            data: {\n                country: this.get('session.currentUser.company_info.country'),\n                lang: moment.locale(),\n            },\n        };\n        promise = this.get('admintool')\n            .get('products', params)\n            .then((products) => {\n                this.set('product_list', products);\n                return console.log(products);\n            });\n        return this.set('product_list_fetcher', promise);\n    },\n    database_value: function (record, form, fields) {\n        var field, j, len, val;\n        val = '';\n        if (!record) {\n            return '';\n        }\n        for (j = 0, len = fields.length; j < len; j++) {\n            field = fields[j];\n            if (record.get(field)) {\n                val += this._format_(record.get(field), form, field) + ' ';\n            }\n        }\n        return val;\n    },\n    _format_: function (\n        value,\n        form,\n        fieldName,\n        format = 'html',\n        record = null,\n        isImageModal = false,\n    ) {\n        var field, first, second, values;\n        if (!value && value !== false) {\n            return '';\n        }\n        field = this.formField(form, fieldName);\n        if (fieldName === 'row_info.created') {\n            field = Ember.Object.create();\n            Ember.set(field, 'type', 'row_info');\n        }\n        if (fieldName === 'row_info.modified') {\n            field = Ember.Object.create();\n            Ember.set(field, 'type', 'row_info');\n        }\n        Ember.set(field, 'ext', fieldName);\n        if (fieldName === 'location' || fieldName === 'end_location') {\n            Ember.set(field, 'type', 'gpslocation');\n        }\n        if (field.type === 'database' && Ember.typeOf(value) === 'number') {\n            value = this.get('store').peekRecord(field.options.form, value);\n        }\n        if (field.type === 'date' && value.indexOf('_') !== -1) {\n            values = value.split('_');\n            first = this.format(values[0], field, null, record, format !== 'html', form);\n            second = this.format(values[1], field, null, record, format !== 'html', form);\n            return first + ' - ' + second;\n        } else {\n            return this.format(\n                value,\n                field,\n                null,\n                record,\n                format === 'html' ? false : format,\n                form,\n                true,\n                isImageModal,\n            );\n        }\n    },\n    format: function (\n        value,\n        field,\n        controller,\n        content = null,\n        donotaddHTML = false,\n        form = null,\n        fuckTheseEmptyDivs = false,\n        fuckTheseImageModals = false,\n    ) {\n        var allRecords,\n            base,\n            child_ext,\n            classes,\n            correctFields,\n            d,\n            dew_point,\n            dist_txt,\n            div,\n            e,\n            endHTML,\n            exe_types,\n            ext,\n            fields,\n            file,\n            filethumb,\n            fileurl,\n            formattedHours,\n            formattedStatus,\n            gps,\n            group_by_materialgroup,\n            hours,\n            html,\n            humidity,\n            image_types,\n            item,\n            j,\n            json,\n            l,\n            len,\n            len1,\n            len2,\n            len3,\n            len4,\n            len5,\n            length,\n            minus,\n            minutes,\n            ms,\n            n,\n            name,\n            names,\n            new_val,\n            o,\n            object,\n            plus,\n            q,\n            r,\n            ref,\n            ref1,\n            ref2,\n            ref3,\n            ref4,\n            ref5,\n            ref6,\n            ref7,\n            ret,\n            return_str,\n            right_ext,\n            self,\n            startHTML,\n            statusIcon,\n            storeData,\n            string,\n            target,\n            target_field,\n            temp,\n            temperature,\n            thisIsSignature,\n            thumburl,\n            tmp,\n            tmpFields,\n            translatedStatus,\n            type,\n            unit,\n            url,\n            val,\n            value_arr,\n            weather,\n            windspeed;\n        self = this;\n        if (typeof field === 'string') {\n            field = collector.getFormObject(field);\n        }\n        field = Em.Object.create(field);\n        ext = field.get('ext') || field.get('name');\n        type = field.get('type');\n        if (ext === 'weather') {\n            type = 'weather';\n        }\n        if (ext === 'location' || ext === 'end_location') {\n            type = 'gpslocation';\n        }\n        if (ext === 'location_map') {\n            type = 'gpslocationmap';\n        }\n        if (ext === 'km') {\n            type = 'km';\n        }\n        if (this.unit(field)) {\n            unit = ' ' + this.unit(field);\n        } else {\n            unit = '';\n        }\n        if (!['csv', 'excel', 'serverlessexcel'].includes(donotaddHTML)) {\n            // Don't show tr measurement minus fields, they are formatted into plus rows\n            if (ext.indexOf('_minus', ext.length - 6) !== -1) {\n                return;\n            }\n            // Format measurements plus fields to also show minus value\n            if (ext.indexOf('_plus', ext.length - 5) !== -1) {\n                name = ext.substring(0, ext.length - 5);\n                if (content) {\n                    minus = content.get(name + '_minus');\n                    plus = content.get(name + '_plus');\n                } else if (controller) {\n                    minus = controller.get('content.' + name + '_minus');\n                    plus = controller.get('content.' + name + '_plus');\n                }\n                // If either one has value, we want to show it in report and force 0 if empty (bugfix EP-9036)\n                if (plus != null || minus != null) {\n                    plus = plus ? plus : '0';\n                    minus = minus ? minus : '0';\n                    val = plus + ' / ' + minus;\n                } else {\n                    val = '';\n                }\n                return val;\n            }\n        }\n        if (\n            !fuckTheseEmptyDivs &&\n            !value &&\n            field.get('type') !== 'checkbox' &&\n            field.get('type') !== 'object' &&\n            type !== 'gpslocation' &&\n            value !== false &&\n            value !== 0\n        ) {\n            if (donotaddHTML) {\n                return '';\n            }\n            //put some empty spaces so we can edit empty cells\n            div = document.createElement('div');\n            div.innerHTML = '&nbsp;';\n            div.setAttribute('style', 'width: 100%;cursor:text');\n            return div;\n        }\n        switch (type) {\n            case 'secure_attachment':\n                return this.intl.t('general.attachments_count', { count: value.length });\n            case 'databasearray':\n            case 'work_permit_attachment':\n                // this is to get report databasearray-filters to show correctly when exporting\n                if (Ember.typeOf(value) === 'string') {\n                    tmpFields = this.fields(field.get('options.form'));\n                    correctFields = tmpFields[field.get('options.fields.0')];\n                    allRecords = this.get('store').peekAll(correctFields['options']['form']);\n                    tmp = allRecords.findBy('id', value);\n                    return tmp.get(correctFields['options']['fields'][0]);\n                }\n                // first only testing with worktime materials .. maybe could be used in other databasearrays also later\n                if (\n                    ext === 'material' &&\n                    (donotaddHTML === false ||\n                        donotaddHTML === 'pdf' ||\n                        donotaddHTML === 'excel' ||\n                        donotaddHTML === 'serverlessexcel')\n                ) {\n                    value_arr = [];\n                    if (this.testNeeds(['materialgroup'])) {\n                        group_by_materialgroup = {};\n                        value.forEach((row) => {\n                            if (Ember.typeOf(row.get) !== 'function') {\n                                return;\n                            }\n                            if (group_by_materialgroup[row.get('materialgroup.name')] == null) {\n                                group_by_materialgroup[row.get('materialgroup.name')] = [];\n                            }\n                            return group_by_materialgroup[row.get('materialgroup.name')].push(row);\n                        });\n                        Object.keys(group_by_materialgroup).forEach((materialgroup) => {\n                            if (materialgroup !== 'undefined') {\n                                if (donotaddHTML) {\n                                    value_arr.push(materialgroup);\n                                } else {\n                                    value_arr.push('<b>' + materialgroup + '</b>');\n                                }\n                            }\n                            return group_by_materialgroup[materialgroup].forEach((row) => {\n                                val =\n                                    row.get('type.name') +\n                                    ': ' +\n                                    row.get('amount') +\n                                    ' ' +\n                                    (row.get('type.unit') || '');\n                                if (\n                                    donotaddHTML === 'pdf' ||\n                                    donotaddHTML === 'excel' ||\n                                    donotaddHTML === 'serverlessexcel'\n                                ) {\n                                    return value_arr.push(val);\n                                } else {\n                                    return value_arr.push('&nbsp;&nbsp;&nbsp;' + val);\n                                }\n                            });\n                        });\n                    } else {\n                        value.forEach((row) => {\n                            if (row.get == null) {\n                                return;\n                            }\n                            if (\n                                row.get('type.name') &&\n                                Ember.typeOf(row.get('amount')) !== 'undefined'\n                            ) {\n                                return value_arr.push(\n                                    row.get('type.name') +\n                                        ': ' +\n                                        row.get('amount') +\n                                        ' ' +\n                                        (row.get('type.unit') || ''),\n                                );\n                            }\n                        });\n                    }\n                    if (donotaddHTML) {\n                        return value_arr.join(' / ');\n                    } else {\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"small text-nowrap\">' + value_arr.join('<br>') + '</span>',\n                        );\n                    }\n                } else if (\n                    ext === 'multitask' &&\n                    (donotaddHTML === false ||\n                        donotaddHTML === 'pdf' ||\n                        donotaddHTML === 'excel' ||\n                        donotaddHTML === 'serverlessexcel')\n                ) {\n                    value_arr = [];\n                    value.forEach((row) => {\n                        var formattedHours, hoursWithClock;\n                        if (row.get == null) {\n                            return;\n                        }\n                        if (\n                            row.get('taskname.name') &&\n                            Ember.typeOf(row.get('hours')) !== 'undefined'\n                        ) {\n                            formattedHours = localization.formatHours(row.get('hours'));\n                            hoursWithClock =\n                                '<span class=\"move move-Time\"></span> ' + formattedHours;\n\n                            // if subtask is added to the task, add it to the string also,\n                            // so it can be seen in the report/pdf/csv\n                            const subTask = row.get('subtaskname.name') ?? '';\n\n                            return value_arr.push(\n                                row.get('taskname.name') +\n                                    ': ' +\n                                    (donotaddHTML ? formattedHours : hoursWithClock) +\n                                    ' ' +\n                                    subTask,\n                            );\n                        }\n                    });\n                    if (donotaddHTML) {\n                        return value_arr.join(' / ');\n                    } else {\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"small text-nowrap\">' + value_arr.join('<br>') + '</span>',\n                        );\n                    }\n                } else if (\n                    ext === 'workpermit' &&\n                    (donotaddHTML === false ||\n                        ['pdf', 'csv', 'excel', 'serverlessexcel'].includes(donotaddHTML))\n                ) {\n                    value_arr = [];\n\n                    value.forEach((row) => {\n                        //format attachments\n                        const attachments = this.intl.t('general.attachments_count', {\n                            count: row.attachments.length,\n                        });\n                        // format type\n                        const typeValue = row.id_type || row.type;\n                        const typeKey = row.id_type ? 'id_type' : 'type';\n                        const Type = this.intl.t(`workpermit.${typeKey}.${typeValue}`);\n                        // format valid_until\n                        const formattedValidUntilDate = moment(row.valid_until).format(\n                            'DD.MM.YYYY',\n                        );\n                        const validUntil = this.intl.t('general.expires', {\n                            date: formattedValidUntilDate,\n                        });\n\n                        value_arr.push(`${attachments} ${Type} ${validUntil}`);\n                    });\n\n                    if (donotaddHTML) {\n                        return value_arr.join(' / ');\n                    } else {\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"small text-nowrap\">' + value_arr.join('<br>') + '</span>',\n                        );\n                    }\n                } else {\n                    return value.get('length');\n                }\n                break;\n            case 'hours':\n                // this is some ugly code!!!!\n                if (\n                    donotaddHTML === 'pdf' ||\n                    donotaddHTML === 'sumrow' ||\n                    donotaddHTML === 'calendar' ||\n                    donotaddHTML === 'excel' ||\n                    donotaddHTML === 'serverlessexcel' ||\n                    donotaddHTML === 'salarycategory'\n                ) {\n                    return localization.formatHours(value, donotaddHTML);\n                } else if (donotaddHTML) {\n                    return value;\n                } else {\n                    if (!isNaN(value)) {\n                        if (Ember.typeOf(value) === 'string') {\n                            value = parseFloat(value);\n                        }\n                        value = value.toFixed(2);\n                    }\n                    formattedHours = localization.formatHours(value);\n                    if (field.features.custom === 'format_also_days') {\n                        formattedHours = localization.formatDaysAndHours(value);\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"move move-Time\"></span> ' + formattedHours,\n                    );\n                }\n                break;\n            case 'minutes':\n                if (value > 60) {\n                    hours = value / 60;\n                    minutes = Math.round((hours - Math.floor(hours)) * 60);\n                    return Math.floor(hours) + 'h:' + (minutes < 10 ? '0' : '') + minutes + 'min';\n                }\n                return value + 'min';\n            case 'status':\n                translatedStatus = this.get('intl').exists('status.' + value + '_text');\n                if (translatedStatus) {\n                    formattedStatus = this.get('intl').t('status.' + value + '_text');\n                }\n                if (donotaddHTML) {\n                    if (translatedStatus) {\n                        return formattedStatus;\n                    } else {\n                        return value;\n                    }\n                } else {\n                    if (translatedStatus) {\n                        if (value === 'error_in' || value === 'error_out') {\n                            formattedStatus = this.get('intl').t('status.system_edited_text');\n                        }\n                        statusIcon = (function () {\n                            switch (value) {\n                                case 'open':\n                                    return 'Circle';\n                                case 'approved':\n                                case 'ok':\n                                    return 'CheckedCircle';\n                                case 'closed':\n                                case 'invoiced':\n                                    return 'DoubleTick';\n                                case 'saved':\n                                    return 'SaveDisk';\n                                case 'fixed':\n                                    return 'Maintenance';\n                                case 'new':\n                                    return 'Error';\n                                case 'not_verified':\n                                case 'blocked':\n                                    return 'DoNotDisturb';\n                                case 'error_in':\n                                case 'error_out':\n                                case 'system_edited':\n                                    return 'SystemReport';\n                                case 'rejected':\n                                    return 'Rejected';\n                                default:\n                                    return false;\n                            }\n                        })();\n                        if (statusIcon) {\n                            return new Ember.String.htmlSafe(\n                                '<span class=\"' +\n                                    value +\n                                    ' report-status-icon\" title=\"' +\n                                    formattedStatus +\n                                    '\"><span class=\"move move-' +\n                                    statusIcon +\n                                    '\"></span></span>',\n                            );\n                        } else {\n                            string = this.shortFormat(formattedStatus);\n                            return new Ember.String.htmlSafe(\n                                '<span class=\"report-status-icon ' +\n                                    value +\n                                    '\" title=\"' +\n                                    formattedStatus +\n                                    '\">' +\n                                    string.toUpperCase() +\n                                    '</span>',\n                            );\n                        }\n                    } else {\n                        string = this.shortFormat(value);\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"report-status-icon own-status\" title=\"' +\n                                value +\n                                '\">' +\n                                string.toUpperCase() +\n                                '</span>',\n                        );\n                    }\n                }\n                break;\n            case 'dropdown_userlevel':\n                // own userrole\n                if (parseInt(value) > 9) {\n                    field.get('options').forEach(function (option) {\n                        if (option.indexOf(value) === 0) {\n                            return (name = option.substring(2));\n                        }\n                    });\n                    return name;\n                } else {\n                    if (!content && !form) {\n                        if (controller.get('content.length') > 1) {\n                            content = controller.get('content.firstObject');\n                        } else {\n                            content = controller.get('content');\n                        }\n                        form = content.get('constructor.modelName');\n                    } else if (content) {\n                        form = content.get('constructor.modelName');\n                    }\n                    return this.get('intl').t(form + '.' + ext + '.' + value);\n                }\n                break;\n            case 'dropdown_options':\n            case 'dropdown_values':\n            case 'dropdown_language':\n                if (Ember.isArray(value)) {\n                    return this.formatDropdownSums(value, field, form, donotaddHTML);\n                }\n                if (form) {\n                    return this.getDropdownValue(null, value, field, form);\n                }\n                if (!content) {\n                    if (controller.get('content.length') > 1) {\n                        content = controller.get('content.firstObject');\n                    } else {\n                        content = controller.get('content');\n                    }\n                }\n                return this.getDropdownValue(content, value, field);\n            case 'dropdown_country':\n                return value.toUpperCase();\n            case 'timerlink':\n                if (!value) {\n                    return value;\n                }\n                if (value.get == null) {\n                    return value;\n                }\n                if (\n                    Ember.isEmpty(Ember.get(value, 'endtime')) &&\n                    Ember.isEmpty(Ember.get(value, 'starttime'))\n                ) {\n                    return;\n                }\n                if (Ember.isEmpty(Ember.get(value, 'endtime'))) {\n                    return this.get('intl').t('general.timerlink.started');\n                }\n                ms = moment(Ember.get(value, 'endtime')).diff(\n                    moment(Ember.get(value, 'starttime')),\n                );\n                d = moment.duration(ms);\n                hours = Math.floor(d.asHours());\n                if (hours < 10) {\n                    hours = '0' + hours;\n                }\n                return hours + moment.utc(ms).format(':mm:ss');\n            case 'database':\n                val = '';\n                if (!value) {\n                    return value;\n                }\n                if (value.get == null) {\n                    return value;\n                }\n                fields = this.fields(field.get('options.form'));\n                ref = field.get('options.fields');\n                for (j = 0, len = ref.length; j < len; j++) {\n                    field = ref[j];\n                    if (fields[field]) {\n                        type = fields[field].type;\n                    } else {\n                        type = null;\n                    }\n                    if (type === 'hdfile') {\n                        continue;\n                    }\n                    if (value.get(field)) {\n                        temp = value.get(field);\n                        if (type === 'date') {\n                            temp = moment(temp).format('L');\n                        }\n                        val += temp + ' ';\n                    }\n                }\n                return val;\n            case 'month_dropdown':\n                if (value === '0000-00-00') {\n                    return '';\n                }\n                return moment(value).format('MMMM YYYY');\n            case 'date':\n                if (ext === 'valid_until') {\n                    const formattedValidUntilDate = moment(value).format('DD.MM.YYYY');\n                    return this.intl.t('general.expires', { date: formattedValidUntilDate });\n                }\n\n                if (Ember.typeOf(value) === 'string' && value.substring(0, 6) === 'count:') {\n                    return value.substring(6);\n                }\n                if (Ember.typeOf(value) !== 'string') {\n                    return value;\n                }\n                if (value === '0000-00-00') {\n                    return '';\n                }\n                if (donotaddHTML === 'csv' || donotaddHTML === 'serverlessexcel') {\n                    return moment(value).format('L');\n                }\n                return moment(value).format('dd') + ', ' + moment(value).format('L');\n            case 'datetime':\n                if (Ember.typeOf(value) !== 'string') {\n                    return value;\n                }\n                return moment(value).format('L LT');\n            case 'checkbox':\n                if (donotaddHTML === 'salarycategory') {\n                    return value + ' ' + this.get('intl').t('general.pieces');\n                }\n                if (Ember.typeOf(value) === 'string' && value.includes(':')) {\n                    return this.formatCheckboxSums(value);\n                }\n                ret = function () {\n                    switch (value) {\n                        case '1':\n                        case true:\n                        case 'on':\n                            return this.get('intl').t('general.yes');\n                        default:\n                            return this.get('intl').t('general.no');\n                    }\n                }.call(this);\n                return ret;\n            case 'hdfile':\n            case 'fileupload':\n                image_types = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif', 'image/pjpeg'];\n                exe_types = [\n                    'application/octet-stream',\n                    'application/x-msdownload',\n                    'application/exe',\n                    'application/x-exe',\n                    'application/dos-exe',\n                    'vms/exe',\n                    'application/x-winexe',\n                    'application/msdos-windows',\n                    'application/x-msdos-program',\n                ];\n                if (value.length >= 1) {\n                    return_str = '';\n                    for (l = 0, len1 = value.length; l < len1; l++) {\n                        file = value[l];\n                        if (((ref1 = file.type), indexOf.call(exe_types, ref1) >= 0)) {\n                            return file.name;\n                        }\n                        if (((ref2 = file.type), indexOf.call(image_types, ref2) >= 0)) {\n                            if (donotaddHTML) {\n                                return '';\n                            }\n                            // Always prefer signed URLs over traditional URLs\n                            // Fallback to traditional URLs maintains application stability when:\n                            // - S3 service is temporarily unavailable\n                            // - Signed URL generation fails due to configuration issues\n                            // - Network connectivity issues prevent S3 API calls\n                            // Note: Traditional URLs will return 403 errors due to blocked public S3 access,\n                            // but this prevents complete application crashes and maintains UI functionality\n                            fileurl = file.s3url || file.url;\n                            filethumb = file.s3thumb || file.thumb;\n                            if (file.name === 'signature.png') {\n                                file.thumb = fileurl;\n                            }\n                            if (file.name === 'naama.png') {\n                                file.thumb = fileurl;\n                            }\n                            if (filethumb == null) {\n                                return null;\n                            }\n                            url = this.makeFileUrl(collector.api_url() + '/', filethumb);\n                            // super cool way to render signatures differently .. :+1:\n                            thisIsSignature = false;\n                            if (field.ext) {\n                                thisIsSignature = field.ext.search('sign') !== -1;\n                            }\n                            classes = 'img-thumb' + (thisIsSignature ? ' img-thumb-sign' : '');\n                            if (fuckTheseImageModals) {\n                                return {\n                                    isImage: true,\n                                    src: filethumb || fileurl,\n                                    fullSrc: fileurl,\n                                    classes,\n                                };\n                            }\n                            // This is bit ugly to inject router here but what can you do\n                            base = this.getModalUrl('modal=showImage,' + fileurl);\n                            startHTML =\n                                '<a class=\"hidden-print\" href=\"' +\n                                base +\n                                '\"><div class=\"' +\n                                classes +\n                                '\" style=\"background-image:url(\\'';\n                            endHTML =\n                                '\\');\"></div></a><div class=\"visible-print ' +\n                                classes +\n                                '\" style=\"content:url(\\'' +\n                                url +\n                                '\\');\"></div>';\n                            return_str += ' ' + startHTML + url + endHTML;\n                        } else if (file.url || file.s3url) {\n                            if (donotaddHTML) {\n                                return_str += file.name + ' ';\n                            } else {\n                                // Always prefer signed URLs over traditional URLs\n                                // Fallback maintains application stability - see comment above for details\n                                url = this.makeFileUrl(\n                                    collector.api_url() + '/',\n                                    file.s3url || file.url,\n                                );\n                                target = this.get('gui').isIOS\n                                    ? ' target=\"_system\"'\n                                    : ' target=\"_blank\"';\n                                return_str +=\n                                    ' ' +\n                                    '<a href=\"' +\n                                    url +\n                                    '\" ' +\n                                    target +\n                                    '>' +\n                                    file.name +\n                                    '</a>';\n                            }\n                        }\n                    }\n                    if (donotaddHTML) {\n                        return return_str;\n                    }\n                    return new Ember.String.htmlSafe(return_str);\n                } else {\n                    if (((ref3 = value.type), indexOf.call(image_types, ref3) >= 0)) {\n                        if (donotaddHTML) {\n                            return '';\n                        }\n                        // Always prefer signed URLs over traditional URLs\n                        // Fallback maintains application stability - see comment above for details\n                        const thumbUrl = value.s3thumb || value.thumb;\n                        const fileUrl = value.s3url || value.url;\n\n                        if (thumbUrl == null) {\n                            return null;\n                        }\n                        url = this.makeFileUrl(collector.api_url() + '/', thumbUrl);\n                        // super cool way to render signatures differently .. :+1:\n                        thisIsSignature = field.ext.search('sign') !== -1;\n                        classes = 'img-thumb' + (thisIsSignature ? ' img-thumb-sign' : '');\n                        // This is bit ugly to inject router here but what can you do\n                        base = this.getModalUrl('modal=showImage,' + fileUrl);\n                        startHTML =\n                            '<a class=\"hidden-print\" href=\"' +\n                            base +\n                            '\"><div class=\"' +\n                            classes +\n                            '\" style=\"background-image:url(\\'';\n                        endHTML =\n                            '\\');\"></div></a><div class=\"visible-print ' +\n                            classes +\n                            '\" style=\"content:url(\\'' +\n                            url +\n                            '\\');\"></div>';\n                        return new Ember.String.htmlSafe(startHTML + url + endHTML);\n                    } else if (value.s3url || value.url) {\n                        if (donotaddHTML) {\n                            return value.name + ' ';\n                        }\n                        // Always prefer signed URLs over traditional URLs\n                        // Fallback maintains application stability - see comment above for details\n                        url = this.makeFileUrl(collector.api_url() + '/', value.s3url || value.url);\n                        return new Ember.String.htmlSafe(\n                            '<a href=\"' + url + '\" target=\"_blank \">' + value.name + '</a>',\n                        );\n                    } else {\n                        return null;\n                    }\n                }\n                break;\n            case 'signature':\n                if (donotaddHTML) {\n                    return '';\n                }\n                image_types = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif', 'image/pjpeg'];\n                if (value.length > 0 && typeof value !== 'string') {\n                    value = value[0];\n                }\n                if (((ref4 = value.type), indexOf.call(image_types, ref4) >= 0)) {\n                    url = value.s3url ? value.s3url : collector.api_url() + '/' + value.url;\n                    thumburl = value.s3thumb ? value.s3thumb : url;\n                    classes = 'img-thumb img-thumb-sign';\n                    startHTML =\n                        '<a href=\"' +\n                        url +\n                        '\" target=\"_blank \"><div class=\"' +\n                        classes +\n                        '\" style=\"background-image:url(\\'';\n                    endHTML =\n                        '\\');\"></div><style>@media print{div.img-thumb::after{content:url(\"' +\n                        thumburl +\n                        '\");}}</style></a>';\n                    return new Ember.String.htmlSafe(startHTML + thumburl + endHTML);\n                }\n                if (typeof value === 'string') {\n                    //for mongo, signatures are stored directly as a base64 string\n                    type = value.substr(0, value.indexOf(';')).substr(5); //extract image type from \"data:image/png;base64here\"\n                    if (indexOf.call(image_types, type) >= 0) {\n                        classes = 'img-thumb img-thumb-sign';\n                        html =\n                            '<div class=\"' +\n                            classes +\n                            '\" style=\"background-image:url(\\'' +\n                            value +\n                            '\\')\"</div></a>';\n                        return new Ember.String.htmlSafe(html);\n                    } else {\n                        return null;\n                    }\n                } else {\n                    return null;\n                }\n                break;\n            case 'object':\n                if (content != null) {\n                    right_ext = ext.split('_');\n                    object = content[right_ext[0]];\n                    right_ext.shift();\n                    child_ext = right_ext.join('_');\n                    if (object != null) {\n                        target_field = {\n                            type: field.get('target_type'),\n                            ext: child_ext,\n                            features: {},\n                        };\n                        return this.format(\n                            object[child_ext],\n                            target_field,\n                            null,\n                            Em.Object.create(object),\n                            donotaddHTML,\n                        );\n                    }\n                }\n                return '';\n            case 'multiselect':\n                if (Ember.typeOf(value) === 'number') {\n                    value = this.get('store').peekRecord(field.get('options.form'), value);\n                    val = '';\n                    if (!value) {\n                        return value;\n                    }\n                    if (value.get == null) {\n                        return value;\n                    }\n                    fields = this.fields(field.get('options.form'));\n                    ref5 = field.get('options.fields');\n                    for (n = 0, len2 = ref5.length; n < len2; n++) {\n                        field = ref5[n];\n                        if (value.get(field)) {\n                            val += value.get(field);\n                        }\n                    }\n                    return val;\n                }\n                if (ext.includes('_notices') && value.length > 0) {\n                    length = new Set(value).size;\n                    return length;\n                }\n                if (Ember.typeOf(value) === 'array') {\n                    storeData =\n                        (ref6 = this.get('store').peekAll(field.get('options.form'))) != null\n                            ? ref6.map((rec) => {\n                                  return parseInt(rec.id);\n                              })\n                            : void 0;\n                    value = storeData.length\n                        ? value.filter((v) => {\n                              return storeData.includes(v);\n                          })\n                        : value;\n                }\n                if (value.length > 0) {\n                    return value.length + ' ' + this.get('intl').t('report.items_checked');\n                }\n                break;\n            case 'password':\n                if (value === 'secured') {\n                    if (donotaddHTML) {\n                        return '';\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-approved\">' +\n                            this.get('intl').t('status.secured') +\n                            '</span>',\n                    );\n                } else {\n                    if (donotaddHTML) {\n                        return value;\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-open lowercase\">' + value + '</span>',\n                    );\n                }\n                break;\n            case 'embedded':\n                new_val = '';\n                ref7 = field.get('options');\n                for (o = 0, len3 = ref7.length; o < len3; o++) {\n                    field = ref7[o];\n                    if (value[field]) {\n                        new_val += value[field] + ', ';\n                    }\n                }\n                return (value = new_val.slice(0, -2));\n            case 'checkboxgroup':\n                names = [];\n                self = this;\n                value.forEach((sub_value) => {\n                    var addthis;\n                    if (field.options[sub_value] == null) {\n                        return;\n                    }\n                    if (field.options[sub_value].substring(0, 1) !== '$') {\n                        addthis = field.options[sub_value];\n                    } else {\n                        ext = field.ext ? field.ext : field.external_type;\n                        addthis = self.get('intl').t('orientations.' + ext + '.' + sub_value); // need to find better solution for this (works for orientations only now)\n                    }\n                    if (\n                        addthis === field.options[sub_value] &&\n                        this.get('intl').exists(field.options[sub_value])\n                    ) {\n                        addthis = this.get('intl').t(field.options[sub_value]);\n                    }\n                    return names.push(donotaddHTML ? addthis : this.minifyLong(addthis));\n                });\n                if (donotaddHTML) {\n                    return names.join(', ');\n                } else {\n                    return new Ember.String.htmlSafe(names.join('<br>'));\n                }\n                break;\n            case 'gpslocation':\n                if (value) {\n                    try {\n                        gps = JSON.parse(value);\n                    } catch (error1) {\n                        e = error1;\n                        return '';\n                    }\n                    if (gps.distance) {\n                        if (gps.distance > 1000) {\n                            dist_txt = Math.round(gps.distance / 1000) + 'km';\n                        } else {\n                            dist_txt = Math.round(gps.distance) + 'm';\n                        }\n                        if (donotaddHTML) {\n                            return dist_txt;\n                        }\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"label-m label-m-approved\" title=\"Lat: ' +\n                                gps.latitude +\n                                ', Long: ' +\n                                gps.longitude +\n                                ', Dist ' +\n                                dist_txt +\n                                '\">' +\n                                dist_txt +\n                                '</span>',\n                        );\n                    } else {\n                        if (donotaddHTML) {\n                            return this.get('intl').t('general.yes');\n                        }\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"label-m label-m-approved\" title=\"Lat: ' +\n                                gps.latitude +\n                                ', Long: ' +\n                                gps.longitude +\n                                '\"><span class=\"glyphicon glyphicon-ok\"></span></span>',\n                        );\n                    }\n                } else {\n                    if (donotaddHTML) {\n                        return this.get('intl').t('general.no');\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-open\" title=\"' +\n                            this.get('intl').t('field.gps.no_value') +\n                            '\"><span class=\"glyphicon glyphicon-remove\"></span></span>',\n                    );\n                }\n                break;\n            case 'gpslocationmap':\n                if (value) {\n                    let gps = null;\n                    try {\n                        gps = JSON.parse(value);\n                    } catch (e) {\n                        return 'broken coordinates';\n                    }\n\n                    if (donotaddHTML) {\n                        return this.get('intl').t('general.yes');\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-approved\" title=\"Lat: ' +\n                            gps.latitude +\n                            ', Long: ' +\n                            gps.longitude +\n                            '\"><span class=\"glyphicon glyphicon-ok\"></span></span>',\n                    );\n                }\n                break;\n            case 'timeclean_imei':\n                if (!value) {\n                    return '';\n                }\n                try {\n                    value = JSON.parse(value);\n                } catch (error1) {\n                    e = error1;\n                    value = [value];\n                }\n                if (donotaddHTML) {\n                    string = '';\n                    for (q = 0, len4 = value.length; q < len4; q++) {\n                        item = value[q];\n                        string += item + ', ';\n                    }\n                    return string.slice(0, -2);\n                } else {\n                    string = '';\n                    for (r = 0, len5 = value.length; r < len5; r++) {\n                        item = value[r];\n                        string += '<code>' + item + '</code><br>';\n                    }\n                    return new Ember.String.htmlSafe(string.slice(0, -4));\n                }\n                break;\n            case 'password':\n                if (value === 'secured') {\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-approved\">' + value.toUpperCase() + '</span>',\n                    );\n                } else {\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-open\">' + value + '</span>',\n                    );\n                }\n                break;\n            case 'weather':\n                if (value === 'null') {\n                    return '';\n                }\n                if (Em.isBlank(value)) {\n                    return '';\n                }\n                if (value && value !== '') {\n                    if (Ember.typeOf(value) === 'string') {\n                        if (value.slice(0, 1) === '\"' && value.slice(-1) === '\"') {\n                            value = value.slice(1, -1);\n                        }\n                        try {\n                            json = JSON.parse(value);\n                        } catch (error1) {\n                            e = error1;\n                            return '';\n                        }\n                    } else {\n                        json = value;\n                    }\n                    if (donotaddHTML) {\n                        temperature = json.temperature ? json.temperature : '-';\n                        windspeed = json.windspeed ? json.windspeed : '-';\n                        humidity = json.humidity ? json.humidity : '-';\n                        dew_point = json.dew_point ? json.dew_point : '-';\n                        weather = temperature + ' °C, ' + windspeed + ' m/s ' + humidity + ' % ';\n                        weather +=\n                            this.get('intl').t('worksitediary.abbr_rel_hum') +\n                            ', ' +\n                            this.get('intl').t('worksitediary.abbr_dew_point') +\n                            ': ' +\n                            dew_point +\n                            ' °C';\n                        return weather;\n                    } else {\n                        string =\n                            \"<span class='weather-icon move move-\" + json.weather + \"'></span> \";\n                        if (json.temperature) {\n                            string += json.temperature + '&deg;C, ';\n                        } else {\n                            string += '- &deg;C, ';\n                        }\n                        if (json.windspeed) {\n                            string += json.windspeed + ' m/s, ';\n                        } else {\n                            string += '- m/s, ';\n                        }\n                        if (json.humidity) {\n                            string +=\n                                json.humidity +\n                                '% ' +\n                                this.get('intl').t('worksitediary.abbr_rel_hum') +\n                                ', ';\n                        } else {\n                            string +=\n                                '- % ' + this.get('intl').t('worksitediary.abbr_rel_hum') + ', ';\n                        }\n                        string += this.get('intl').t('worksitediary.abbr_dew_point') + ': ';\n                        if (json.dew_point) {\n                            string += json.dew_point;\n                        } else {\n                            string += '- &deg;C';\n                        }\n                        return new Ember.String.htmlSafe(string);\n                    }\n                } else {\n                    return '';\n                }\n                break;\n            case 'radio':\n                if (!value) {\n                    return value;\n                }\n                if (value.substring(0, 1) === '$') {\n                    return this.get('intl').t(form + '.option.' + value.substring(1));\n                } else {\n                    return this.get('intl').t(form + '.' + ext + '.' + value);\n                }\n                break;\n            case 'row_info':\n                if ((ext = 'row_info.created' && donotaddHTML !== 'serverlessexcel')) {\n                    return moment(value, 'L LT').format('L LT');\n                } else {\n                    return value;\n                }\n                break;\n            case 'textarea':\n                if (donotaddHTML === 'serverlessexcel') {\n                    return value.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n                } else if (donotaddHTML) {\n                    return sanitize(value);\n                } else {\n                    return Ember.String.htmlSafe(\n                        \"<span style='white-space: pre-line;'>\" + sanitize(value) + '</span>',\n                    );\n                }\n                break;\n            case 'price':\n                if (!value) {\n                    return value;\n                }\n                return Math.round((value + 0.00001) * 100) / 100;\n            case 'km':\n                if (!['csv', 'excel', 'serverlessexcel'].includes(donotaddHTML)) {\n                    return value + ' km';\n                }\n                return value;\n            default:\n                if (controller && controller.get('parentController')) {\n                    value = controller.get('parentController').formatter(ext, value + unit);\n                }\n                if (donotaddHTML === 'pdf') {\n                    return '' + value;\n                }\n                return value;\n        }\n    },\n    formatDropdownSums: function (values, field, form, donotaddHTML) {\n        var formattedSums, pdfSums;\n        formattedSums = '';\n        pdfSums = '';\n        Object.entries(values).forEach((data) => {\n            var option, translatedValue;\n            if (this.get('intl').exists(form + '.' + field.ext + '.' + data[0])) {\n                translatedValue = this.get('intl').t(form + '.' + field.ext + '.' + data[0]);\n            } else if (this.get('intl').exists(form + '.' + field.external_type + '.' + data[0])) {\n                translatedValue = this.get('intl').t(\n                    form + '.' + field.external_type + '.' + data[0],\n                );\n            } else {\n                option = field.options.find((v) => {\n                    return v.id === data[0];\n                });\n                translatedValue = option && Ember.typeOf(option) === 'object' ? option.value : null;\n            }\n            if (translatedValue) {\n                formattedSums += '<div>' + translatedValue + ': ' + data[1] + '</div>';\n                return (pdfSums += translatedValue + ': ' + data[1] + '\\n');\n            }\n        });\n        if (donotaddHTML === 'sumrow') {\n            return pdfSums;\n        }\n        return Ember.String.htmlSafe(formattedSums);\n    },\n    makeFileUrl: function (url, str) {\n        if (str.startsWith('http')) {\n            return str;\n        } else {\n            return url + str;\n        }\n    },\n    formatCheckboxSums: function (value) {\n        var onoff, ret;\n        onoff = value.split(',');\n        ret = [];\n        onoff.forEach((item) => {\n            var v;\n            v = item.split(':');\n            // If just on or off and value is 1 don't show amounts as capi someone returs these as false/true or on:1 / off:1\n            // trying to be cohesive like this\n            if (onoff.length === 1 && v[1] === '1') {\n                return ret.push(\n                    v[0] === 'on'\n                        ? this.get('intl').t('general.yes')\n                        : this.get('intl').t('general.no'),\n                );\n            } else {\n                return ret.push(\n                    v[0] === 'on'\n                        ? this.get('intl').t('general.yes') + ': ' + v[1]\n                        : this.get('intl').t('general.no') + ': ' + v[1],\n                );\n            }\n        });\n        // Reverse so we have yes first as in report sums\n        return ret.reverse().join(' / ');\n    },\n    minifyLong: function (str, length = 20) {\n        if (str.string != null) {\n            str = str.string;\n        }\n        if (str.length <= length) {\n            return str;\n        }\n        return '<span title=\"' + str + '\">' + str.substring(0, length) + '...</span>';\n    },\n    getModalUrl: function (url) {\n        var base, split;\n        base = this.get('routing.router.location.location.href');\n        split = base.split('?');\n        if (split[1] != null && split[1].substr(0, 6) === 'modal=') {\n            delete split[1];\n        }\n        url = encodeURIComponent(url);\n        url = url.replace('%3D', '=');\n        if (url.startsWith('http')) {\n            console.log('here');\n            return url;\n        }\n        return split[0] + '?' + (split[1] != null ? split[1] + '&' + url : url);\n    },\n    getDropdownValue: function (content, value, field, form = null) {\n        var ext, option, options, ret;\n        ext = Ember.get(field, 'ext');\n        if (Ember.get(field, 'name')) {\n            options = Ember.get(field, 'options');\n            if (form) {\n                ret = this.parseDropdownSums(form, field, value);\n                if (ret) {\n                    return ret;\n                }\n            }\n            option = options.findBy('id', value);\n            if (!option) {\n                return value;\n            }\n            return option.value;\n        } else if (form) {\n            ret = this.parseDropdownSums(form, field, value);\n            if (!ret) {\n                options = Ember.get(field, 'options');\n                option = options.findBy('id', value);\n                if (!option) {\n                    return value;\n                }\n                return option.value;\n            }\n            return ret;\n        } else {\n            return this.get('intl').t(\n                content.get('constructor.modelName') + '.' + ext + '.' + value,\n            );\n        }\n    },\n    parseDropdownSums: function (form, field, value) {\n        var arr, ext, index, is_summing, j, len, m, option, options, str, summing_object, temp_arr;\n        ext = Ember.get(field, 'ext') ? Ember.get(field, 'ext') : Ember.get(field, 'external_type');\n        // test for summing\n        is_summing = true;\n        summing_object = {};\n        if (Ember.typeOf(value) === 'string') {\n            arr = value.split(',');\n            for (j = 0, len = arr.length; j < len; j++) {\n                str = arr[j];\n                m = /(.+):(\\d*)/i.exec(str);\n                if (m === null) {\n                    is_summing = false;\n                } else {\n                    summing_object[m[1]] = m[2];\n                }\n            }\n        }\n        if (is_summing) {\n            options = Ember.get(field, 'options');\n            temp_arr = [];\n            for (index in summing_object) {\n                option = options.findBy('id', index);\n                if (this.get('intl').exists(form + '.' + ext + '.' + index)) {\n                    temp_arr.push(\n                        this.get('intl').t(form + '.' + ext + '.' + index) +\n                            ':' +\n                            summing_object[index],\n                    );\n                } else if (option) {\n                    temp_arr.push(option.value + ':' + summing_object[index]);\n                } else {\n                    temp_arr.push(index + ':' + summing_object[index]);\n                }\n            }\n            return temp_arr.join(', ');\n        } else if (this.get('intl').exists(form + '.' + ext + '.' + value)) {\n            return this.get('intl').t(form + '.' + ext + '.' + value);\n        } else {\n            return false;\n        }\n    },\n    format_export: function (value) {\n        if (value != null && /<[a-z][\\s\\S]*>|{[\\s\\S]*}/i.test(value.string)) {\n            value = '';\n        }\n        if (\n            value instanceof HTMLElement ||\n            value == null ||\n            /<[a-z][\\s\\S]*>|{[\\s\\S]*}/i.test(value)\n        ) {\n            value = '';\n        }\n        return value.toString();\n    },\n    unit: function (field) {\n        switch (field.get('type')) {\n            case 'minutes':\n                return 'min';\n            case 'price':\n                return '€';\n            case 'big_price':\n                return '€';\n            default:\n                return field.get('options');\n        }\n    },\n    isMandatory: function (field, model) {\n        if (field && typeof field.features.mandatory === 'object') {\n            return validator._is_visible(model, field.features.mandatory);\n        } else if (field.features.mandatory) {\n            return true;\n        }\n        return false;\n    },\n    isHidden: function (field, model) {\n        if (field && typeof field.features.hide === 'object') {\n            return !validator._is_visible(model, field.features.hide);\n        } else if (field.features.hide) {\n            return true;\n        }\n        return false;\n    },\n    getFieldName: function (form, field) {\n        var name;\n        if (field.get('translation')) {\n            return this.get('intl').t(field.get('translation'));\n        }\n        form = form.underscore();\n        if (field.get('type') === 'checkboxgroup') {\n            name = field.get('name')\n                ? field.get('name')\n                : this.get('intl').t(form + 's.' + field.get('ext'));\n            return name;\n        }\n        if (form.startsWith('measurement_custom')) {\n            form = 'report.measurement_custom1';\n        }\n        return field.get('name') || this.get('intl').t(form + '.' + field.get('ext'));\n    },\n    getLogo: function () {\n        var d, imageTypes;\n        d = new $.Deferred();\n        imageTypes = ['image/gif', 'image/png', 'image/jpg', 'image/jpeg'];\n        this.get('store')\n            .findAll('logo')\n            .then(function (logo) {\n                var img, url;\n                if (logo.get('length') > 0 && !Ember.isEmpty(logo)) {\n                    logo = logo.get('firstObject.logo');\n                    if (logo.length === 0) {\n                        url = 'img/brand/logo_with_text.png';\n                        return getImageFromUrl(url).then((file) => {\n                            return resizeImage(file, 600, 300, 60).then((resized) => {\n                                return d.resolve(resized);\n                            });\n                        });\n                    } else {\n                        if (logo.length > 0) {\n                            logo = logo[0];\n                        }\n                        if (!imageTypes.includes(logo.type)) {\n                            url = 'img/brand/logo_with_text.png';\n                            getImageFromUrl(url).then((file) => {\n                                return resizeImage(file, 600, 300, 60).then((resized) => {\n                                    return d.resolve(resized);\n                                });\n                            });\n                        }\n                        img = new Image();\n                        img.crossOrigin = 'Anonymous';\n                        img.onload = function () {\n                            var canvas, ctx, dataURL;\n                            canvas = document.createElement('CANVAS');\n                            ctx = canvas.getContext('2d');\n                            canvas.height = this.height;\n                            canvas.width = this.width;\n                            ctx.drawImage(this, 0, 0);\n                            dataURL = canvas.toDataURL();\n                            canvas = null;\n                            return d.resolve(dataURL);\n                        };\n                        return (img.src = config.APP.COLLECTOR_API_URL + '/' + logo.url);\n                    }\n                } else {\n                    url = 'img/brand/logo_with_text.png';\n                    return getImageFromUrl(url).then((file) => {\n                        return resizeImage(file, 600, 300, 60).then((resized) => {\n                            return d.resolve(resized);\n                        });\n                    });\n                }\n            });\n        return d.promise();\n    },\n    getUserlevel: function (session) {\n        var user;\n        if (session == null) {\n            session = this.get('session');\n        }\n        user = session.get('currentUser');\n        if (user != null) {\n            if (typeof user.userlevel === 'string') {\n                return parseInt(user.userlevel);\n            } else {\n                return parseInt(user.get('userlevel'));\n            }\n        }\n    },\n    ttapi: function (params) {\n        return this.get('ttapiService').request(params.url, params);\n    },\n    ttapi_url: function () {\n        return this.get('ttapiService').host;\n    },\n    ccapi: function (params) {\n        if (config.environment !== 'development' && this.get('flags').test('cc-url')) {\n            params.url = this.get('flags').test('cc-url') + '/trigger/' + params.url;\n        } else {\n            params.url = config.APP.CC_URL + '/' + params.url;\n        }\n        if (params.data == null) {\n            params.data = {};\n        }\n        if (config.environment === 'development') {\n            params.data.capi_url = 'http://capi/';\n            params.data.ttapi_url = 'http://ttapi/';\n        } else {\n            params.data.capi_url = config.APP.COLLECTOR_API_URL + '/';\n            params.data.ttapi_url = this.get('ttapiService').host + '/';\n        }\n        params.data.token = this.get('session.session.authenticated.access_token');\n        params.headers = {\n            Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n        };\n        //console.log \"params\", params\n        return $.ajax(params);\n    },\n    getApiUrl: function () {\n        return config.APP.COLLECTOR_API_URL + '/';\n    },\n    ajax: function (params) {\n        return this.get('capi').request(params.url, params);\n    },\n    cget: function (form, params = {}, sideload = false) {\n        var self;\n        self = this;\n        if (sideload && !params.sideload) {\n            params.sideload = true;\n        }\n        return new Ember.RSVP.Promise(function (resolve, reject) {\n            var paramStr, pluralForm, promise, url;\n            pluralForm = self.pluralize(form);\n            url = pluralForm;\n            //paramArr = []\n            //$.each params, (key, value) ->\n            //    paramArr.push key + \"=\" + value\n            //paramStr = paramArr.join '&'\n\n            // remove undefined params\n            Object.keys(params).forEach(function (key) {\n                if (Ember.typeOf(params[key]) === 'undefined') {\n                    return delete params[key];\n                }\n            });\n            paramStr = $.param(params);\n            if (paramStr !== '') {\n                url += '?' + paramStr;\n            }\n            promise = self.ajax({\n                url: url,\n                method: 'get',\n            });\n            promise.then(function (response) {\n                var EmberRows, rows;\n                if (sideload) {\n                    rows = self.injectSideload(pluralForm, response, sideload === 'obj');\n                } else if (response[form]) {\n                    rows = Em.A(response[form]);\n                } else {\n                    rows = Em.A(response[pluralForm]);\n                }\n                EmberRows = Em.A([]);\n                rows.forEach(function (row) {\n                    return EmberRows.pushObject(Ember.Object.create(row));\n                });\n                return Ember.run(null, resolve, EmberRows);\n            });\n            return promise.catch(function (response) {\n                response.then = null;\n                return Ember.run(null, reject, response);\n            });\n        });\n    },\n    injectSideload: function (form, data, asObj = false) {\n        var cell,\n            column,\n            column_name,\n            field,\n            id,\n            item,\n            j,\n            key,\n            l,\n            len,\n            len1,\n            name,\n            row,\n            rows,\n            self,\n            str,\n            subset,\n            subsets;\n        self = this;\n        rows = data[form];\n        subsets = {};\n        for (name in data) {\n            subset = data[name];\n            if (name === form || name === 'count') {\n                continue;\n            }\n            subsets[name] = {};\n            for (j = 0, len = subset.length; j < len; j++) {\n                item = subset[j];\n                if (asObj) {\n                    subsets[name][item.id] = item;\n                } else {\n                    str = '';\n                    for (key in item) {\n                        cell = item[key];\n                        if (key !== 'id' && cell !== null) {\n                            str += cell + ' ';\n                        }\n                    }\n                    subsets[name][item.id] = str.substring(0, str.length - 1);\n                }\n            }\n        }\n        for (id = l = 0, len1 = rows.length; l < len1; id = ++l) {\n            row = rows[id];\n            for (column in row) {\n                cell = row[column];\n                // lets check this fields options.form to match it to sideloaded forms\n                if (column !== 'id') {\n                    field = self.fieldExists(singularize(form), column)\n                        ? self.field(singularize(form), column)\n                        : {};\n                    if (field.options != null) {\n                        column_name = self.pluralize(field.options.form);\n                    } else {\n                        column_name = self.pluralize(column);\n                    }\n                } else {\n                    column_name = self.pluralize(column);\n                }\n                if (column_name in subsets) {\n                    rows[id][column] = subsets[column_name][cell];\n                }\n            }\n        }\n        return rows;\n    },\n    // used for filter dropdowns. ie. when employer is changed reload user dropdown\n    getDropdownDepency: function (field) {\n        if (field === 'employer') {\n            return [\n                {\n                    field: 'user',\n                    filter: 'employer',\n                },\n            ];\n        } else if (\n            field === 'project' &&\n            this.testNeedsOne('task') &&\n            collector.forms['task'].features != null &&\n            collector.forms['task'].features.link === 'project'\n        ) {\n            return [\n                {\n                    field: 'task',\n                    filter: 'project',\n                },\n            ];\n        } else if (field === 'worktimegroup' && this.testNeedsOne('products.salarytype_v2')) {\n            // salarytypesv2 is a special case\n            return [\n                {\n                    field: 'abcensetype',\n                    filter: 'worktimegroup',\n                },\n                {\n                    field: 'worktype',\n                    filter: 'worktimegroup',\n                },\n            ];\n        }\n        return [];\n    },\n    findFormRelations: function (form, type, params = {}) {\n        var pluralForm, self, url;\n        self = this;\n        pluralForm = pluralize(form).camelize();\n        url = pluralForm + '/' + type;\n        return DS.PromiseArray.create({\n            promise: new Ember.RSVP.Promise(function (resolve, reject) {\n                return self\n                    .ajax({\n                        url: url,\n                        method: 'GET',\n                        data: params,\n                    })\n                    .then(\n                        function (data) {\n                            var formattedData;\n                            formattedData = self.formatParentFormResponse(data, form, type);\n                            return Ember.run(null, resolve, formattedData);\n                        },\n                        function (jqXHR) {\n                            jqXHR.then = null;\n                            return Ember.run(null, reject, jqXHR);\n                        },\n                    );\n            }),\n        });\n    },\n    formatParentFormResponse: function (response, form, type) {\n        var index, j, key, len, modelName, row, rows, self;\n        self = this;\n        modelName = collector.getFormObject(form + '.' + type).options.form;\n        for (key in response) {\n            rows = response[key];\n            if (!(key !== 'count')) {\n                continue;\n            }\n            // If model isn't same as gotten type name we have to set response content to right name\n            // Like in orientation projects are named ori_sites and fetched from /orinentations/ori_sites\n            // but model name is still project and needs to be renamed\n            response[modelName] = [];\n            // Convert from the {id: id, values: {field1: value, field2: value} format that\n            // /:form/:field fetch returns to ember format for pushing to store\n            for (index = j = 0, len = rows.length; j < len; index = ++j) {\n                row = rows[index];\n                row.attributes = row.values;\n                delete row.values;\n                row.type = modelName;\n                response[modelName][index] = row;\n            }\n            response[modelName] = self.get('store').push({\n                data: response[modelName],\n            });\n        }\n        return response[modelName];\n    },\n    pushToStore: function (response) {\n        delete response.count;\n        return this.get('store').pushPayload(response);\n    },\n    pluralize: function (str) {\n        return pluralize(str);\n    },\n    get_greeting: function () {\n        var greeting_arr, str, time;\n        time = parseInt(moment().format('HH'), 10);\n        str = this.get('intl').t('general.welcome');\n        if (str == null) {\n            return '...';\n        }\n        greeting_arr = str.split('\\n');\n        if (time < 2) {\n            return greeting_arr[0];\n        } else if (time >= 2 && time < 5) {\n            return greeting_arr[1];\n        } else if (time >= 5 && time < 10) {\n            return greeting_arr[2];\n        } else if (time >= 10 && time < 12) {\n            return greeting_arr[3];\n        } else if (time >= 12 && time < 17) {\n            return greeting_arr[4];\n        } else if (time >= 17 && time < 19) {\n            return greeting_arr[5];\n        } else if (time >= 19 && time < 22) {\n            return greeting_arr[6];\n        } else if (time >= 22) {\n            return greeting_arr[7];\n        }\n    },\n    parseFormErrors: function (errors) {\n        var error, error_name, error_types, j, len, ref, type;\n        error_types = [];\n        for (j = 0, len = errors.length; j < len; j++) {\n            error = errors[j];\n            error_name = error.substring(30);\n            type = (function () {\n                switch (error_name) {\n                    case 'calculate_saldo_worktime':\n                    case 'remove_saldorow':\n                    case 'calculate_new_saldo':\n                    case 'update_saldo_group':\n                        return 'saldo';\n                    default:\n                        return false;\n                }\n            })();\n            if (\n                type &&\n                ((ref = this.get('intl').t('form.errors.type.' + type)),\n                indexOf.call(error_types, ref) < 0)\n            ) {\n                error_types.push(this.get('intl').t('form.errors.type.' + type));\n            }\n        }\n        return error_types;\n    },\n    // get translation for one column\n    getTranslationForColumn: function (form, fieldName, removed = false) {\n        var field, intl;\n        if (fieldName === 'id') {\n            return 'id';\n        }\n        intl = this.get('intl');\n        if (fieldName.substring(0, 9) === 'row_info.') {\n            return intl.t('general.' + fieldName);\n        }\n        if (removed) {\n            return this.getBestTranslation(form, fieldName);\n        }\n        field = this.fields(form)[fieldName];\n        if (!field) {\n            Ember.assert(\"Field '\" + fieldName + \"' not found for form '\" + form + \"'\");\n        }\n        if ('name' in field) {\n            return field.name;\n        } else {\n            return this.getBestTranslation(form, fieldName);\n        }\n    },\n    getBestTranslation: function (form, fieldName) {\n        var found_key, intl, test_keys;\n        intl = this.get('intl');\n        test_keys = ['report.' + form + '.' + fieldName, 'defaults.field.' + fieldName];\n        found_key = null;\n        test_keys.some((key) => {\n            if (intl.exists(key)) {\n                found_key = key;\n                return true;\n            }\n        });\n        if (found_key) {\n            return intl.t(found_key);\n        } else {\n            return test_keys[0];\n        }\n    },\n    customizeField: function (field, custom) {\n        var feature, item, k, value;\n        for (k in custom) {\n            item = custom[k];\n            if (typeof item === 'object') {\n                for (feature in item) {\n                    value = item[feature];\n                    if (typeof value === 'object') {\n                        // TODO Make better so we can merge unlimited\n                        if (!field[k][feature]) {\n                            field[k][feature] = value;\n                        }\n                    } else {\n                        field[k][feature] = value;\n                    }\n                }\n            } else {\n                field[k] = item;\n            }\n        }\n        return field;\n    },\n\n    // Get row linker links\n    //   ex. kohdekohtaset tehtävät\n\n    //   id: id of record to fetch links to, ex project record id\n    //   form: form name to get the links for, ex \"project\"\n    //   link: name of the link target, ex \"task\"\n    getLinks: function (id, form, link) {\n        var params;\n        params = {\n            url: this.pluralize(form) + '/' + id + '/' + this.pluralize(link),\n        };\n        return this.ajax(params);\n    },\n\n    //   Save row linker links\n    //   ex. kohdekohtaset tehtävät\n\n    //   id: id of record to fetch links to, ex project record id\n    //   form: form name to get the links for, ex \"project\"\n    //   link: name of the link target, ex \"task\"\n    //   links: array of record ids that should be linked to this id\n    saveLinks: function (id, form, link, links) {\n        var data, params;\n        data = {};\n        data[form] = {};\n        data[form]['link.' + this.pluralize(link)] = links;\n        params = {\n            url: this.pluralize(form) + '/' + id + '?validation=off',\n            data: JSON.stringify(data),\n            type: 'PUT',\n        };\n        return this.ajax(params);\n    },\n    canAddWorktime: function (date) {\n        var date_interval, interval_arr;\n        date_interval = this.field('worktime', 'date')['features']['date_interval'];\n        if (date_interval && date_interval === 'locked') {\n            //allow today\n            if (moment().format('YYYY-MM-DD') === date) {\n                return true;\n            }\n            return false;\n        } else if (date_interval) {\n            if (typeof date_interval === 'string') {\n                interval_arr = date_interval.split(',');\n                if (interval_arr.length > 1) {\n                    return (\n                        moment()\n                            .startOf('day')\n                            .subtract(interval_arr[0], 'days')\n                            .isBefore(moment(date, 'YYYY-MM-DD')) &&\n                        moment()\n                            .startOf('day')\n                            .add(interval_arr[1], 'days')\n                            .isAfter(moment(date, 'YYYY-MM-DD'))\n                    );\n                }\n            } else {\n                return (\n                    moment()\n                        .startOf('day')\n                        .subtract(date_interval, 'days')\n                        .isBefore(moment(date, 'YYYY-MM-DD')) &&\n                    moment().startOf('day').add(1, 'days').isAfter(moment(date, 'YYYY-MM-DD'))\n                );\n            }\n        } else {\n            return true;\n        }\n    },\n    shortFormat: function (value, length = 2) {\n        var j, key, len, split, string, val;\n        split = value.split(' ');\n        string = '';\n        if (split.length > 1) {\n            for (key = j = 0, len = split.length; j < len; key = ++j) {\n                val = split[key];\n                if (key + 1 > length) {\n                    continue;\n                }\n                string += val.slice(0, 1);\n            }\n        } else {\n            string = value.slice(0, length);\n        }\n        return string.toUpperCase();\n    },\n    // returns all userlevels in neat array with ids and names\n    // input: array skip_levels - skip these levels\n    getUserlevels: function (skip_levels) {\n        var j, len, lvl, ref, ret, userlevels;\n        userlevels = this.field('user', 'userlevel');\n        ret = [];\n        if (!skip_levels) {\n            skip_levels = [];\n        }\n        ref = userlevels.options;\n        for (j = 0, len = ref.length; j < len; j++) {\n            lvl = ref[j];\n            if (skip_levels.indexOf(parseInt(lvl)) < 0) {\n                if (lvl < 9) {\n                    ret.push({\n                        id: lvl,\n                        name: this.get('intl').t('user.userlevel.' + lvl),\n                    });\n                } else {\n                    ret.push({\n                        id: lvl.substring(0, 2),\n                        name: lvl.substring(2),\n                    });\n                }\n            }\n        }\n        return ret;\n    },\n    randomizeColor: function (value) {\n        var c, hash, i, j, k, len, string;\n        if (value.constructor === Array) {\n            string = value.join('');\n        } else {\n            string = value;\n        }\n        hash = 0;\n        for (i = j = 0, len = string.length; j < len; i = ++j) {\n            k = string[i];\n            hash = string.charCodeAt(i) + ((hash << 5) - hash);\n        }\n        c = (hash & 0x00ffffff).toString(16).toUpperCase();\n        return '#' + '00000'.substring(0, 6 - c.length) + c;\n    },\n    copyRecord: function (record) {\n        var field, form, j, json_record, len, ref;\n        form = record.get('constructor.modelName');\n        json_record = record.serialize();\n        ref = ['status'];\n        for (j = 0, len = ref.length; j < len; j++) {\n            field = ref[j];\n            if (!Ember.isEmpty(json_record[field])) {\n                json_record[field] = null;\n            }\n        }\n        record.eachRelationship((key, relationship) => {\n            var hasManyArr, ref1;\n            if (\n                ((ref1 = relationship.kind) === 'belongsTo' || ref1 === 'hasMany') &&\n                key !== 'export_salary' &&\n                key !== 'export_absence' &&\n                key !== 'row_info'\n            ) {\n                if (\n                    this.field(form, key).type === 'databasearray' ||\n                    this.field(form, key).type === 'work_permit_attachment'\n                ) {\n                    hasManyArr = [];\n                    record.get(key).forEach((hasManyRecord) => {\n                        return hasManyArr.push(this.copyRecord(hasManyRecord));\n                    });\n                    return Ember.set(json_record, key, hasManyArr);\n                } else {\n                    return Ember.set(json_record, key, record.get(key));\n                }\n            }\n        });\n        return this.get('store').createRecord(form, json_record);\n    },\n    getSideloads: function (form) {\n        var fields, sideloads;\n        fields = this.fieldArray(form);\n        sideloads = [];\n        fields.forEach(function (field) {\n            var ref;\n            if (\n                (ref = field.type) === 'database' ||\n                ref === 'databasearray' ||\n                ref === 'multiselect' ||\n                ref === 'work_permit_attachment'\n            ) {\n                return field.options.fields.forEach(function (option) {\n                    return sideloads.push(field.options.form + '.' + option);\n                });\n            }\n        });\n        return sideloads.uniq();\n    },\n    checkRowValidation: function (form, record, edit_mode = false) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var data, form_plural, json, json_str, params, ret;\n            if (edit_mode) {\n                resolve();\n                return;\n            }\n            form_plural = this.pluralize(form);\n            json = record.serialize();\n            data = {};\n            data[form] = json;\n            json_str = JSON.stringify(data);\n            params = {};\n            params.url = form_plural + '?validation=only';\n            params.data = json_str;\n            params.method = 'POST';\n            ret = this.ajax(params);\n            return ret.then(\n                function (ret) {\n                    return resolve(ret);\n                },\n                function (e) {\n                    return reject(e);\n                },\n            );\n        });\n    },\n});\n\nexport default collectorService;\n","define(\"tt4/services/collector\", [\"exports\", \"@movenium/ember-movenium/services/collector\"], function (_exports, _collector) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _collector.default;\n    }\n  });\n});\n","import CookiesService from 'ember-cookies/services/cookies';\n\nexport default CookiesService;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/country-lists.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CountryListsService,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nconst { computed, get } = Ember;\n\nCountryListsService = Ember.Service.extend({\n    countries: [\n        {\n            id: 'af',\n            name: 'Afghanistan',\n        },\n        {\n            id: 'ax',\n            name: 'Aland Islands',\n        },\n        {\n            id: 'al',\n            name: 'Albania',\n        },\n        {\n            id: 'dz',\n            name: 'Algeria',\n        },\n        {\n            id: 'as',\n            name: 'American Samoa',\n        },\n        {\n            id: 'ad',\n            name: 'Andorra',\n        },\n        {\n            id: 'ao',\n            name: 'Angola',\n        },\n        {\n            id: 'ai',\n            name: 'Anguilla',\n        },\n        {\n            id: 'aq',\n            name: 'Antarctica',\n        },\n        {\n            id: 'ag',\n            name: 'Antigua And Barbuda',\n        },\n        {\n            id: 'ar',\n            name: 'Argentina',\n        },\n        {\n            id: 'am',\n            name: 'Armenia',\n        },\n        {\n            id: 'aw',\n            name: 'Aruba',\n        },\n        {\n            id: 'au',\n            name: 'Australia',\n        },\n        {\n            id: 'at',\n            name: 'Austria',\n        },\n        {\n            id: 'az',\n            name: 'Azerbaijan',\n        },\n        {\n            id: 'bs',\n            name: 'Bahamas',\n        },\n        {\n            id: 'bh',\n            name: 'Bahrain',\n        },\n        {\n            id: 'bd',\n            name: 'Bangladesh',\n        },\n        {\n            id: 'bb',\n            name: 'Barbados',\n        },\n        {\n            id: 'by',\n            name: 'Belarus',\n        },\n        {\n            id: 'be',\n            name: 'Belgium',\n        },\n        {\n            id: 'bz',\n            name: 'Belize',\n        },\n        {\n            id: 'bj',\n            name: 'Benin',\n        },\n        {\n            id: 'bm',\n            name: 'Bermuda',\n        },\n        {\n            id: 'bt',\n            name: 'Bhutan',\n        },\n        {\n            id: 'bo',\n            name: 'Bolivia, Plurinational State Of',\n        },\n        {\n            id: 'bq',\n            name: 'Bonaire, Sint Eustatius And Saba',\n        },\n        {\n            id: 'ba',\n            name: 'Bosnia And Herzegovina',\n        },\n        {\n            id: 'bw',\n            name: 'Botswana',\n        },\n        {\n            id: 'bv',\n            name: 'Bouvet Island',\n        },\n        {\n            id: 'br',\n            name: 'Brazil',\n        },\n        {\n            id: 'io',\n            name: 'British Indian Ocean Territory',\n        },\n        {\n            id: 'bn',\n            name: 'Brunei Darussalam',\n        },\n        {\n            id: 'bg',\n            name: 'Bulgaria',\n        },\n        {\n            id: 'bf',\n            name: 'Burkina Faso',\n        },\n        {\n            id: 'bi',\n            name: 'Burundi',\n        },\n        {\n            id: 'kh',\n            name: 'Cambodia',\n        },\n        {\n            id: 'cm',\n            name: 'Cameroon',\n        },\n        {\n            id: 'ca',\n            name: \"Canada\",\n        },\n        {\n            id: 'cv',\n            name: 'Cape Verde',\n        },\n        {\n            id: 'ky',\n            name: 'Cayman Islands',\n        },\n        {\n            id: 'cf',\n            name: 'Central African Republic',\n        },\n        {\n            id: 'td',\n            name: 'Chad',\n        },\n        {\n            id: 'cl',\n            name: 'Chile',\n        },\n        {\n            id: 'cn',\n            name: 'China',\n        },\n        {\n            id: 'cx',\n            name: 'Christmas Island',\n        },\n        {\n            id: 'cc',\n            name: 'Cocos (keeling) Islands',\n        },\n        {\n            id: 'co',\n            name: 'Colombia',\n        },\n        {\n            id: 'km',\n            name: 'Comoros',\n        },\n        {\n            id: 'cg',\n            name: 'Congo',\n        },\n        {\n            id: 'cd',\n            name: 'Congo, The Democratic Republic Of The',\n        },\n        {\n            id: 'ck',\n            name: 'Cook Islands',\n        },\n        {\n            id: 'cr',\n            name: 'Costa Rica',\n        },\n        {\n            id: 'ci',\n            name: \"Cote D'ivoire\",\n        },\n        {\n            id: 'hr',\n            name: 'Croatia',\n        },\n        {\n            id: 'cu',\n            name: 'Cuba',\n        },\n        {\n            id: 'cw',\n            name: 'Curacao',\n        },\n        {\n            id: 'cy',\n            name: 'Cyprus',\n        },\n        {\n            id: 'cz',\n            name: 'Czech Republic',\n        },\n        {\n            id: 'dk',\n            name: 'Denmark',\n        },\n        {\n            id: 'dj',\n            name: 'Djibouti',\n        },\n        {\n            id: 'dm',\n            name: 'Dominica',\n        },\n        {\n            id: 'do',\n            name: 'Dominican Republic',\n        },\n        {\n            id: 'ec',\n            name: 'Ecuador',\n        },\n        {\n            id: 'eg',\n            name: 'Egypt',\n        },\n        {\n            id: 'sv',\n            name: 'El Salvador',\n        },\n        {\n            id: 'gq',\n            name: 'Equatorial Guinea',\n        },\n        {\n            id: 'er',\n            name: 'Eritrea',\n        },\n        {\n            id: 'ee',\n            name: 'Estonia',\n            number: '+372',\n        },\n        {\n            id: 'et',\n            name: 'Ethiopia',\n        },\n        {\n            id: 'fk',\n            name: 'Falkland Islands (malvinas)',\n        },\n        {\n            id: 'fo',\n            name: 'Faroe Islands',\n        },\n        {\n            id: 'fj',\n            name: 'Fiji',\n        },\n        {\n            id: 'fi',\n            name: 'Finland',\n            number: '+358',\n        },\n        {\n            id: 'fr',\n            name: 'France',\n            number: '+33',\n        },\n        {\n            id: 'gf',\n            name: 'French Guiana',\n        },\n        {\n            id: 'pf',\n            name: 'French Polynesia',\n        },\n        {\n            id: 'tf',\n            name: 'French Southern Territories',\n        },\n        {\n            id: 'ga',\n            name: 'Gabon',\n        },\n        {\n            id: 'gm',\n            name: 'Gambia',\n        },\n        {\n            id: 'ge',\n            name: 'Georgia',\n        },\n        {\n            id: 'de',\n            name: 'Germany',\n            number: '+49',\n        },\n        {\n            id: 'gh',\n            name: 'Ghana',\n        },\n        {\n            id: 'gi',\n            name: 'Gibraltar',\n        },\n        {\n            id: 'gr',\n            name: 'Greece',\n        },\n        {\n            id: 'gl',\n            name: 'Greenland',\n        },\n        {\n            id: 'gd',\n            name: 'Grenada',\n        },\n        {\n            id: 'gp',\n            name: 'Guadeloupe',\n        },\n        {\n            id: 'gu',\n            name: 'Guam',\n        },\n        {\n            id: 'gt',\n            name: 'Guatemala',\n        },\n        {\n            id: 'gg',\n            name: 'Guernsey',\n        },\n        {\n            id: 'gn',\n            name: 'Guinea',\n        },\n        {\n            id: 'gw',\n            name: 'Guinea-bissau',\n        },\n        {\n            id: 'gy',\n            name: 'Guyana',\n        },\n        {\n            id: 'ht',\n            name: 'Haiti',\n        },\n        {\n            id: 'hm',\n            name: 'Heard Island And Mcdonald Islands',\n        },\n        {\n            id: 'va',\n            name: 'Holy See (vatican City State)',\n        },\n        {\n            id: 'hn',\n            name: 'Honduras',\n        },\n        {\n            id: 'hk',\n            name: 'Hong Kong',\n        },\n        {\n            id: 'hu',\n            name: 'Hungary',\n            number: '+36',\n        },\n        {\n            id: 'is',\n            name: 'Iceland',\n        },\n        {\n            id: 'in',\n            name: 'India',\n        },\n        {\n            id: 'id',\n            name: 'Indonesia',\n        },\n        {\n            id: 'ir',\n            name: 'Iran, Islamic Republic Of',\n        },\n        {\n            id: 'iq',\n            name: 'Iraq',\n        },\n        {\n            id: 'ie',\n            name: 'Ireland',\n        },\n        {\n            id: 'im',\n            name: 'Isle Of Man',\n        },\n        {\n            id: 'il',\n            name: 'Israel',\n        },\n        {\n            id: 'it',\n            name: 'Italy',\n        },\n        {\n            id: 'jm',\n            name: 'Jamaica',\n        },\n        {\n            id: 'jp',\n            name: 'Japan',\n        },\n        {\n            id: 'je',\n            name: 'Jersey',\n        },\n        {\n            id: 'jo',\n            name: 'Jordan',\n        },\n        {\n            id: 'kz',\n            name: 'Kazakhstan',\n        },\n        {\n            id: 'ke',\n            name: 'Kenya',\n        },\n        {\n            id: 'ki',\n            name: 'Kiribati',\n        },\n        {\n            id: 'kp',\n            name: \"Korea, Democratic People's Republic Of\",\n        },\n        {\n            id: 'kr',\n            name: 'Korea, Republic Of',\n        },\n        {\n            id: 'xk',\n            name: 'Kosovo',\n        },\n        {\n            id: 'kw',\n            name: 'Kuwait',\n        },\n        {\n            id: 'kg',\n            name: 'Kyrgyzstan',\n        },\n        {\n            id: 'la',\n            name: \"Lao People's Democratic Republic\",\n        },\n        {\n            id: 'lv',\n            name: 'Latvia',\n            number: '+371',\n        },\n        {\n            id: 'lb',\n            name: 'Lebanon',\n        },\n        {\n            id: 'ls',\n            name: 'Lesotho',\n        },\n        {\n            id: 'lr',\n            name: 'Liberia',\n        },\n        {\n            id: 'ly',\n            name: 'Libyan Arab Jamahiriya',\n        },\n        {\n            id: 'li',\n            name: 'Liechtenstein',\n        },\n        {\n            id: 'lt',\n            name: 'Lithuania',\n        },\n        {\n            id: 'lu',\n            name: 'Luxembourg',\n        },\n        {\n            id: 'mo',\n            name: 'Macao',\n        },\n        {\n            id: 'mk',\n            name: 'Macedonia, The Former Yugoslav Republic Of',\n        },\n        {\n            id: 'mg',\n            name: 'Madagascar',\n        },\n        {\n            id: 'mw',\n            name: 'Malawi',\n        },\n        {\n            id: 'my',\n            name: 'Malaysia',\n        },\n        {\n            id: 'mv',\n            name: 'Maldives',\n        },\n        {\n            id: 'ml',\n            name: 'Mali',\n        },\n        {\n            id: 'mt',\n            name: 'Malta',\n        },\n        {\n            id: 'mh',\n            name: 'Marshall Islands',\n        },\n        {\n            id: 'mq',\n            name: 'Martinique',\n        },\n        {\n            id: 'mr',\n            name: 'Mauritania',\n        },\n        {\n            id: 'mu',\n            name: 'Mauritius',\n        },\n        {\n            id: 'yt',\n            name: 'Mayotte',\n        },\n        {\n            id: 'mx',\n            name: 'Mexico',\n        },\n        {\n            id: 'fm',\n            name: 'Micronesia, Federated States Of',\n        },\n        {\n            id: 'md',\n            name: 'Moldova, Republic Of',\n        },\n        {\n            id: 'mc',\n            name: 'Monaco',\n        },\n        {\n            id: 'mn',\n            name: 'Mongolia',\n        },\n        {\n            id: 'me',\n            name: 'Montenegro',\n        },\n        {\n            id: 'ms',\n            name: 'Montserrat',\n        },\n        {\n            id: 'ma',\n            name: 'Morocco',\n        },\n        {\n            id: 'mz',\n            name: 'Mozambique',\n        },\n        {\n            id: 'mm',\n            name: 'Myanmar',\n        },\n        {\n            id: 'na',\n            name: 'Namibia',\n        },\n        {\n            id: 'nr',\n            name: 'Nauru',\n        },\n        {\n            id: 'np',\n            name: 'Nepal',\n        },\n        {\n            id: 'nl',\n            name: 'Netherlands',\n            number: '+31',\n        },\n        {\n            id: 'nc',\n            name: 'New Caledonia',\n        },\n        {\n            id: 'nz',\n            name: 'New Zealand',\n        },\n        {\n            id: 'ni',\n            name: 'Nicaragua',\n        },\n        {\n            id: 'ne',\n            name: 'Niger',\n        },\n        {\n            id: 'ng',\n            name: 'Nigeria',\n        },\n        {\n            id: 'nu',\n            name: 'Niue',\n        },\n        {\n            id: 'nf',\n            name: 'Norfolk Island',\n        },\n        {\n            id: 'mp',\n            name: 'Northern Mariana Islands',\n        },\n        {\n            id: 'no',\n            name: 'Norway',\n            number: '+47',\n        },\n        {\n            id: 'om',\n            name: 'Oman',\n        },\n        {\n            id: 'pk',\n            name: 'Pakistan',\n        },\n        {\n            id: 'pw',\n            name: 'Palau',\n        },\n        {\n            id: 'ps',\n            name: 'Palestinian Territory, Occupied',\n        },\n        {\n            id: 'pa',\n            name: 'Panama',\n        },\n        {\n            id: 'pg',\n            name: 'Papua New Guinea',\n        },\n        {\n            id: 'py',\n            name: 'Paraguay',\n        },\n        {\n            id: 'pe',\n            name: 'Peru',\n        },\n        {\n            id: 'ph',\n            name: 'Philippines',\n        },\n        {\n            id: 'pn',\n            name: 'Pitcairn',\n        },\n        {\n            id: 'pl',\n            name: 'Poland',\n            number: '+48',\n        },\n        {\n            id: 'pt',\n            name: 'Portugal',\n        },\n        {\n            id: 'pr',\n            name: 'Puerto Rico',\n        },\n        {\n            id: 'qa',\n            name: 'Qatar',\n        },\n        {\n            id: 're',\n            name: 'Reunion',\n        },\n        {\n            id: 'ro',\n            name: 'Romania',\n        },\n        {\n            id: 'ru',\n            name: 'Russian Federation',\n        },\n        {\n            id: 'rw',\n            name: 'Rwanda',\n        },\n        {\n            id: 'bl',\n            name: 'Saint Barthelemy',\n        },\n        {\n            id: 'sh',\n            name: 'Saint Helena, Ascension And Tristan Da Cunha',\n        },\n        {\n            id: 'kn',\n            name: 'Saint Kitts And Nevis',\n        },\n        {\n            id: 'lc',\n            name: 'Saint Lucia',\n        },\n        {\n            id: 'mf',\n            name: 'Saint Martin (french Part)',\n        },\n        {\n            id: 'pm',\n            name: 'Saint Pierre And Miquelon',\n        },\n        {\n            id: 'vc',\n            name: 'Saint Vincent And The Grenadines',\n        },\n        {\n            id: 'ws',\n            name: 'Samoa',\n        },\n        {\n            id: 'sm',\n            name: 'San Marino',\n        },\n        {\n            id: 'st',\n            name: 'Sao Tome And Principe',\n        },\n        {\n            id: 'sa',\n            name: 'Saudi Arabia',\n        },\n        {\n            id: 'sn',\n            name: 'Senegal',\n        },\n        {\n            id: 'rs',\n            name: 'Serbia',\n        },\n        {\n            id: 'sc',\n            name: 'Seychelles',\n        },\n        {\n            id: 'sl',\n            name: 'Sierra Leone',\n        },\n        {\n            id: 'sg',\n            name: 'Singapore',\n        },\n        {\n            id: 'sx',\n            name: 'Sint Maarten (dutch Part)',\n        },\n        {\n            id: 'sk',\n            name: 'Slovakia',\n        },\n        {\n            id: 'si',\n            name: 'Slovenia',\n        },\n        {\n            id: 'sb',\n            name: 'Solomon Islands',\n        },\n        {\n            id: 'so',\n            name: 'Somalia',\n        },\n        {\n            id: 'za',\n            name: 'South Africa',\n        },\n        {\n            id: 'gs',\n            name: 'South Georgia And The South Sandwich Islands',\n        },\n        {\n            id: 'es',\n            name: 'Spain',\n            number: '+34',\n        },\n        {\n            id: 'lk',\n            name: 'Sri Lanka',\n        },\n        {\n            id: 'sd',\n            name: 'Sudan',\n        },\n        {\n            id: 'sr',\n            name: 'Suriname',\n        },\n        {\n            id: 'sj',\n            name: 'Svalbard And Jan Mayen',\n        },\n        {\n            id: 'sz',\n            name: 'Swaziland',\n        },\n        {\n            id: 'se',\n            name: 'Sweden',\n            number: '+46',\n        },\n        {\n            id: 'ch',\n            name: 'Switzerland',\n        },\n        {\n            id: 'sy',\n            name: 'Syrian Arab Republic',\n        },\n        {\n            id: 'tw',\n            name: 'Taiwan, Province Of China',\n        },\n        {\n            id: 'tj',\n            name: 'Tajikistan',\n        },\n        {\n            id: 'tz',\n            name: 'Tanzania, United Republic Of',\n        },\n        {\n            id: 'th',\n            name: 'Thailand',\n        },\n        {\n            id: 'tl',\n            name: 'Timor-leste',\n        },\n        {\n            id: 'tg',\n            name: 'Togo',\n        },\n        {\n            id: 'tk',\n            name: 'Tokelau',\n        },\n        {\n            id: 'to',\n            name: 'Tonga',\n        },\n        {\n            id: 'tt',\n            name: 'Trin{idad And Tobago',\n        },\n        {\n            id: 'tn',\n            name: 'Tunisia',\n        },\n        {\n            id: 'tr',\n            name: 'Turkey',\n        },\n        {\n            id: 'tm',\n            name: 'Turkmenistan',\n        },\n        {\n            id: 'tc',\n            name: 'Turks And Caicos Islands',\n        },\n        {\n            id: 'tv',\n            name: 'Tuvalu',\n        },\n        {\n            id: 'ug',\n            name: 'Uganda',\n        },\n        {\n            id: 'ua',\n            name: 'Ukraine',\n        },\n        {\n            id: 'ae',\n            name: 'United Arab Emirates',\n        },\n        {\n            id: 'gb',\n            name: 'United Kingdom',\n            number: '+44',\n        },\n        {\n            id: 'us',\n            name: 'United States',\n        },\n        {\n            id: 'um',\n            name: 'United States Minor Outlying Islands',\n        },\n        {\n            id: 'uy',\n            name: 'Uruguay',\n        },\n        {\n            id: 'uz',\n            name: 'Uzbekistan',\n        },\n        {\n            id: 'vu',\n            name: 'Vanuatu',\n        },\n        {\n            id: 'va',\n            name: 'Vatican City State',\n        },\n        {\n            id: 've',\n            name: 'Venezuela, Bolivarian Republic Of',\n        },\n        {\n            id: 'vn',\n            name: 'Viet Nam',\n        },\n        {\n            id: 'vg',\n            name: 'Virgin Islands, British',\n        },\n        {\n            id: 'vi',\n            name: 'Virgin Islands, U.s.',\n        },\n        {\n            id: 'wf',\n            name: 'Wallis And Futuna',\n        },\n        {\n            id: 'eh',\n            name: 'Western Sahara',\n        },\n        {\n            id: 'ye',\n            name: 'Yemen',\n        },\n        {\n            id: 'zm',\n            name: 'Zambia',\n        },\n        {\n            id: 'zw',\n            name: 'Zimbabwe',\n        },\n    ],\n    shortNordic: ['se', 'fi', 'pl', 'ee', 'lv', 'lt', 'no', 'dk', 'cz'],\n    shortList: computed(function () {\n        var filterBy;\n        filterBy = this.get('shortNordic');\n        return this.get('countries').filter((country) => {\n            var ref;\n            if (((ref = country.id), indexOf.call(filterBy, ref) >= 0)) {\n                return true;\n            }\n        });\n    }),\n    fullList: computed(function () {\n        return this.get('countries');\n    }),\n    phoneList: computed.filterBy('countries', 'number'),\n});\n\nexport default CountryListsService;\n","define(\"tt4/services/csv\", [\"exports\", \"ember-cli-data-export/services/csv\"], function (_exports, _csv) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _csv.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _csv.initialize;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/customer-settings.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CustomerSettingsService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nCustomerSettingsService = Ember.Service.extend({\n    ttapi: Ember.inject.service(),\n    settings: Em.A([]),\n    getSettings: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return this.get('ttapi')\n                ._get('/settings')\n                .then((data) => {\n                    this.set('settings', data);\n                    return resolve(data);\n                })\n                .catch((reason) => {\n                    return reject(reason);\n                });\n        });\n    },\n    /*\n  return new Em.RSVP.Promise( (resolve, reject) =>\n      url = config.APP.TTAPI+'/settings'\n      $.ajax(\n          url: url\n          type: 'GET'\n\n          success: (data) =>\n              @set \"settings\", data\n              resolve(data)\n\n          error: (reason) ->\n              reject(reason)\n      )\n  )\n  */\n    checkSetting: function (name) {\n        if (!this.get('settings')) {\n            return false;\n        }\n        if (Em.isEmpty(this.get('settings'))) {\n            return false;\n        }\n        if (!this.get('settings').findBy('key', name)) {\n            return false;\n        }\n        if (this.get('settings').findBy('key', name).value === 'on') {\n            return true;\n        } else if (\n            this.get('settings').findBy('key', name).value &&\n            this.get('settings').findBy('key', name).value !== 'off'\n        ) {\n            return this.get('settings').findBy('key', name).value;\n        } else {\n            return false;\n        }\n    },\n    setSetting: function (name, value, worktimegroup) {\n        var obj, settingsArr, url;\n        // do not change sessions settings if changing state of worktimegroup specific setting\n        if (!worktimegroup) {\n            if (this.get('settings') && !Em.isEmpty(this.get('settings'))) {\n                if (this.get('settings').findBy('key', name)) {\n                    //save new value and push to settings property\n                    obj = this.get('settings').findBy('key', name);\n                    obj.value = value;\n                    this.get('settings').removeObject(this.get('settings').findBy('key', name));\n                    this.get('settings').pushObject(obj);\n                } else {\n                    this.get('settings').pushObject({\n                        key: name,\n                        value: value,\n                    });\n                }\n            } else {\n                settingsArr = Em.A([]);\n                settingsArr.pushObject({\n                    key: name,\n                    value: value,\n                });\n                this.set('settings', settingsArr);\n            }\n        }\n        //save setting to the ttapi\n        url = '/settings/save';\n        return this.get('ttapi').request(url, {\n            type: 'POST',\n            dataType: 'text',\n            data: {\n                key: name,\n                value: value,\n                worktimegroup: worktimegroup,\n            },\n        });\n    },\n});\n\nexport default CustomerSettingsService;\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport config from '../config/environment';\nimport { get } from '@ember/object';\n/* global cordova */\n\nexport default Service.extend({\n    session: service(),\n    moment: service(),\n    flags: service(),\n    //initapp: service(),\n    collector: service('collector-service'),\n\n    // This would IMO be the more elegant solution but did not trigger at any point. Dunno why...\n    // init() {\n    //     this._super(...arguments)\n    //     this.initapp.one('appReady', this.start())\n    // },\n    start() {\n        this.setContext();\n    },\n\n    setContext() {\n        window.dap = {};\n        this.setLanguageMethod();\n        this.setUserContext();\n        this.setCompanyContext();\n        this.getCustomerProduct();\n    },\n\n    setLanguageMethod() {\n        if (!window.get_language) {\n            window.get_language = function () {\n                const lang = localStorage.getItem('lang')\n                    ? localStorage.getItem('lang')\n                    : moment.locale();\n                if (lang === 'en' || !lang) {\n                    return '';\n                } else {\n                    return lang;\n                }\n            };\n        }\n    },\n\n    getCustomerProduct() {\n        if (!window.getProduct) {\n            window.getProduct = function (product) {\n                return window.dap.company.products.indexOf(product) != -1 ? true : false;\n            };\n        }\n    },\n\n    async setUserContext() {\n        const userData = this.session.currentUser;\n\n        const userParsedData = {\n            key: userData.partnerid + '' + userData.id,\n            id: userData.id,\n            userlevel: parseInt(userData.userlevel),\n            application: window.cordova ? true : false,\n            version: config.APP.version,\n            userCreated: moment(get(userData.row_info, 'created')).valueOf(),\n            flags: this.flags.allFlags(),\n            firstname: userData.firstname,\n            lastname: userData.lastname,\n            language: localStorage.getItem('lang') ? localStorage.getItem('lang') : moment.locale(),\n        };\n\n        if (window.cordova) {\n            userParsedData.appVersion = await cordova.getAppVersion.getVersionNumber();\n        }\n\n        window.dap.user = userParsedData;\n\n        return;\n    },\n\n    setCompanyContext() {\n        const userData = this.session.currentUser;\n\n        let customProducts = {};\n        const companyParsedData = {\n            partnerid: userData.partnerid,\n            company_name: userData.company,\n            vatin: userData.company_info.company_vatin,\n            country: userData.company_info.country,\n            serviceType: config.brand,\n            serviceCreated: moment(get(userData.company_info.row_info, 'created')).valueOf(),\n            products: this.collector.products,\n        };\n        for (var product of this.collector.products) {\n            customProducts[product] = 1;\n        }\n        window.dap.product_objects = customProducts;\n        window.dap.company = companyParsedData;\n\n        return;\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/dialogs.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DialogsService;\n\nimport Ember from 'ember';\n\nimport { alertify } from '@labeg/alertify.js';\n\nDialogsService = Ember.Service.extend({\n    intl: Ember.inject.service(),\n    confirm: function (message) {\n        if ('function' !== typeof Promise) {\n            return new Ember.RSVP.Promise((resolve, reject) => {\n                var val;\n                val = confirm(message);\n                return resolve(val);\n            });\n        } else {\n            return alertify\n                .okBtn(this.get('intl').t('general.yes'))\n                .cancelBtn(this.get('intl').t('general.no'))\n                .confirm(message)\n                .then(function (resolvedValue) {\n                    resolvedValue.event.preventDefault();\n                    if (resolvedValue.buttonClicked === 'ok') {\n                        return true;\n                    } else {\n                        return false;\n                    }\n                });\n        }\n    },\n    alert: function (message) {\n        return alertify.okBtn('OK').alert(message);\n    },\n    prompt: function (message, def) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return alertify\n                .defaultValue(def)\n                .okBtn(this.get('intl').t('general.save'))\n                .cancelBtn(this.get('intl').t('general.cancel'))\n                .prompt(\n                    message,\n                    (str, e) => {\n                        e.preventDefault();\n                        return resolve(str);\n                    },\n                    (e) => {\n                        e.preventDefault();\n                        return resolve(false);\n                    },\n                );\n        });\n    },\n});\n\nexport default DialogsService;\n","import Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport { isArray } from '@ember/array';\n\n/**\n * Handles all operations that have to do with errors\n *\n * ```js\n * @service errorHandler;\n * this.errorHandler.notify(<yourError>)\n * ```\n *\n * @class ErrorHandlerService\n * @constructor\n * @public\n */\n\nexport default class ErrorHandlerService extends Service {\n    @service private intl: any;\n    @service private notifications: any;\n\n    public toError(error: any) {\n        if (this._capiError(error)) return this._capiError(error);\n        if (this._networkError(error)) return this._networkError(error);\n\n        let message = JSON.stringify(error);\n        if (get(error, 'payload.message')) message = get(error, 'payload.message');\n        else if (error.message) message = error.message;\n        return {\n            type: 'unknown',\n            error,\n            message: this.tryToTranslateMessage(message),\n            meta: null,\n        };\n    }\n\n    /**\n     * Use notifications to show user to error. Can be used directly in promise fail\n     * EXAMPLE: promise.then(..., (reason) => get(this, 'error').notify(reason)))\n     * @method notify\n     * @param {*} error\n     */\n    public notify(error: any) {\n        this.notifications.error(this.errorToString(error), { autoClear: true });\n    }\n\n    public errorToString(error: any) {\n        if (!error) return;\n        // try to get message first from .message and if not found check also .error\n        return this.toError(error)!.message\n            ? this.toError(error)!.message\n            : this.toError(error)!.error;\n    }\n\n    private tryToTranslateMessage(message: any) {\n        if (typeof message !== 'string') return message;\n        const strippedMessage = message.toLowerCase().replace(/ /g, ' ');\n        if (this.intl.exists('error.' + strippedMessage)) {\n            return this.intl.t('error.' + strippedMessage);\n        }\n        return message;\n    }\n\n    /**\n     * FORMAT EXAMPLE\n     *  if application adapter has normalized error it looks like this\n     *  {\n     *      message: 'Request was rejected because user is not permitted to perform this operation.'\n     *      name: 'Error'\n     *      payload: {\n     *          error: 'overlap',\n     *          error_msg: 'two or more rows have overlapping dates'\n     *          meta: {hits: 'worktime', ids: Array(1)\n     *      }\n     *      stack: ....\n     *  }\n     *\n     *  OR\n     *  if application adapter has not normalized error it looks like this\n     *  {\n     *      errors: [\n     *          {\n     *              error: 'overlap'\n     *              errorMeta: {hits: 'absence', ids: Array(1)}\n     *              error_msg: 'two or more rows have overlapping dates'\n     *          }\n     *      ]\n     *      message: 'Ember Data Request POST http://localhost:30001/abcenses returned a 403 .....\n     *      name: 'Error'\n     *\n     *  @method _capiError\n     *  @param {any} error\n     *  @return {object}\n     */\n    private _capiError(error: any) {\n        if (typeof error !== 'object') return null;\n        let ret = null;\n        let errors = 'errors';\n        if (isArray(get(error, 'errors'))) {\n            errors = 'errors.0';\n        }\n\n        if (get(error, 'payload.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, 'payload.error'),\n                message: get(error, 'payload.error_msg'),\n                meta: get(error, 'payload.meta'),\n            };\n        } else if (get(error, errors + '.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, errors + '.error'),\n                message: get(error, errors + '.error_msg'),\n                meta: get(error, errors + '.errorMeta'),\n            };\n        } else {\n            return null;\n        }\n\n        switch (ret.error) {\n            case 'overlap':\n                if (ret.meta.hits === 'absence')\n                    ret.message = this.intl.t('validation.absence_overlap');\n                else if (ret.meta.hits === 'comp')\n                    ret.message = this.intl.t('validation.comp_overlap');\n                else ret.message = this.intl.t('validation.worktime_overlap');\n                break;\n            case 'no_holidays':\n                ret.message = this.intl.t('validation.no_holidays', {\n                    daysleft: ret.meta.daysleft,\n                });\n                break;\n            case 'no_holidaypays':\n                ret.message = this.intl.t('validation.no_holidaypays', {\n                    daysleft: ret.meta.daysleft,\n                });\n                break;\n            case 'id06checkfailed':\n                const errorCode = ret.meta.message;\n\n                if (errorCode === 'not found') {\n                    ret.message = this.intl.t('validation.error.id06_not_found');\n                } else if (errorCode) {\n                    const translationKey = `user.action.checkid06.reason_${errorCode}`;\n                    if (this.intl.exists(translationKey)) ret.message = this.intl.t(translationKey);\n                    else ret.message = this.intl.t('user.action.id06check');\n                }\n                break;\n            case 'not_only_row':\n                ret.message = this.intl.t('validation.worktime_not_only_row');\n                break;\n            case 'not_found':\n                ret.message = this.intl.t('validation.not_found.general');\n                break;\n            case 'validation_error':\n                ret.message = this.intl.exists('validation.' + ret.message)\n                    ? this.intl.t('validation.' + ret.message)\n                    : ret.message;\n                break;\n            case 'not_allowed':\n                ret.message = this.intl.exists('validation_error.' + ret.error)\n                    ? this.intl.t('validation_error.' + ret.error)\n                    : ret.message;\n        }\n\n        return ret;\n    }\n\n    /**\n     * FORMAT EXAMPLE\n     *  {\n     *      message: 'The ajax operation was aborted'\n     *      name: 'Error'\n     *      payload: null\n     *      stack: ....\n     *  @method _networkError\n     *  @param {any} error\n     *  @return {object}\n     */\n    private _networkError(error: any) {\n        if (typeof error !== 'object') return null;\n        if (error.message !== 'The ajax operation was aborted') return null;\n\n        return {\n            type: 'network',\n            error: error.message,\n            message: this.intl.t('validation.network_error'),\n            meta: null,\n        };\n    }\n}\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport { isArray } from '@ember/array';\nimport { htmlSafe } from '@ember/template';\n\nexport default Service.extend({\n    intl: service(),\n    notifications: service(),\n    store: service(),\n\n    toString(error) {\n        // try to get message first from .message and if not found check also .error\n        return this.toError(error).message\n            ? this.toError(error).message\n            : this.toError(error).error;\n    },\n\n    /**\n     * Same as toString but async so this is able to add meta.hits info also to response string\n     * return string as safeHtml\n     * @param {*} error\n     */\n    async toStringAsyncHTML(error) {\n        const errorObj = this.toError(error);\n\n        await this.addPossibleHitsToMessage(errorObj);\n\n        // try to get message first from .message and if not found check also .error\n        const message = errorObj.message ? errorObj.message : errorObj.error;\n\n        return htmlSafe(message.replace(/\\n/g, '<br>'));\n    },\n\n    toError(error) {\n        if (this._vastuuGroupError(error)) return this._vastuuGroupError(error);\n        if (this._capiError(error)) return this._capiError(error);\n        if (this._networkError(error)) return this._networkError(error);\n\n        let message = JSON.stringify(error);\n        if (get(error, 'payload.message')) message = get(error, 'payload.message');\n        else if (error.message) message = error.message;\n\n        return {\n            type: 'unknown',\n            error: error,\n            message: this.tryToTranslateMessage(message),\n            meta: null,\n        };\n    },\n\n    /**\n     * Use notifications to show user to error. Can be used directly in promise fail\n     * EXAMPLE: promise.then(..., (reason) => get(this, \"error\").notify(reason)))\n     * @param {*} error\n     */\n    async notify(error) {\n        const message = await this.toStringAsyncHTML(error);\n        get(this, 'notifications').error(message, { autoClear: true });\n    },\n\n    tryToTranslateMessage(message) {\n        if (typeof message !== 'string') return message;\n        const stripped_message = message.toLowerCase().replace(/ /g, '_');\n        if (get(this, 'intl').exists('error.' + stripped_message))\n            return get(this, 'intl').t('error.' + stripped_message);\n        return message;\n    },\n\n    /**\n     * FORMAT EXAMPLE\n     *  if application adapter has normalized error it looks like this\n     *  {\n     *      message: \"Request was rejected because user is not permitted to perform this operation.\"\n     *      name: \"Error\"\n     *      payload: {\n     *          error: \"overlap\",\n     *          error_msg: \"two or more rows have overlapping dates\"\n     *          meta: {hits: \"worktime\", ids: Array(1)\n     *      }\n     *      stack: ....\n     *  }\n     *\n     *  OR\n     *  if application adapter has not normalized error it looks like this\n     *  {\n     *      errors: [\n     *          {\n     *              error: \"overlap\"\n     *              errorMeta: {hits: \"absence\", ids: Array(1)}\n     *              error_msg: \"two or more rows have overlapping dates\"\n     *          }\n     *      ]\n     *      message: \"Ember Data Request POST http://localhost:30001/abcenses returned a 403 .....\n     *      name: \"Error\"\n     */\n    _capiError(error) {\n        if (typeof error !== 'object') return null;\n        let ret = null;\n        let errors = 'errors';\n        if (isArray(get(error, 'errors'))) {\n            errors = 'errors.0';\n        }\n        if (get(error, 'payload.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, 'payload.error'),\n                message: get(error, 'payload.error_msg'),\n                meta: get(error, 'payload.meta'),\n            };\n        } else if (get(error, errors + '.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, errors + '.error'),\n                message: get(error, errors + '.error_msg'),\n                meta: get(error, errors + '.errorMeta'),\n            };\n        } else {\n            return null;\n        }\n\n        switch (ret.error) {\n            case 'overlap':\n                if (ret.meta.hits == 'absence')\n                    ret.message = get(this, 'intl').t('validation.absence_overlap');\n                else if (ret.meta.hits == 'comp')\n                    ret.message = get(this, 'intl').t('validation.comp_overlap');\n                else ret.message = get(this, 'intl').t('validation.worktime_overlap');\n                break;\n            case 'not_only_row':\n                ret.message = get(this, 'intl').t('validation.worktime_not_only_row');\n                break;\n            case 'not_found':\n                ret.message = get(this, 'intl').t('validation.not_found.general');\n                break;\n            case 'validation_error':\n                ret.message = this.intl.exists('validation.' + ret.message)\n                    ? this.intl.t('validation.' + ret.message)\n                    : ret.message;\n                break;\n            case 'form_field_exists':\n                ret.message = get(this, 'intl').t('formeditor.field_exists');\n                break;\n        }\n\n        return ret;\n    },\n\n    /**\n     * FORMAT EXAMPLE\n     *  {\n     *      message: \"The ajax operation was aborted\"\n     *      name: \"Error\"\n     *      payload: null\n     *      stack: ....\n     */\n    _networkError(error) {\n        if (typeof error !== 'object') return null;\n        if (error.message !== 'The ajax operation was aborted') return null;\n\n        return {\n            type: 'network',\n            error: error.message,\n            message: get(this, 'intl').t('validation.network_error'),\n            meta: null,\n        };\n    },\n\n    /**\n     * FORMAT EXAMPLE for VastuuGroup Reliable Partner API errors\n     * Error object structure:\n     * {\n     *     message: \"Request failed with status code 403\"\n     *     payload: {\n     *         response_body: \"{\\\"detail\\\":\\\"No active license.\\\",\\\"error\\\":\\\"license_missing\\\",\\\"product_plan_id\\\":\\\"\\\",\\\"product_family_id\\\":\\\"Valvoja\\\",\\\"product_name\\\":\\\"Valvoja rajapinta\\\"}\"\n     *     }\n     * }\n     *\n     * Parsed response_body contains:\n     * - detail: Human-readable error message (required)\n     * - error: Error code for programmatic handling (optional)\n     * - product_name: Name of the product/service (optional)\n     * - product_family_id: Product family identifier (optional)\n     * - product_plan_id: Product plan identifier (optional)\n     *\n     * @see https://api.vastuugroup.fi/api-docs#tag/Luotettava-Kumppani-API-v1.1\n     */\n\n    _vastuuGroupError(error) {\n        // Validate error structure - must have response body\n        if (!error?.payload?.response_body) return null;\n\n        try {\n            // Parse JSON response body\n            const body = JSON.parse(error.payload.response_body);\n\n            // Detail field is required for vastuugroup errors\n            if (!body?.detail) return null;\n\n            // error message prefix\n            const errorPrefix = this.intl.t('general.error_prefix');\n\n            // Build error message, append product name if available\n            const message = body.product_name\n            ? `${errorPrefix} ${body.detail} (${body.product_name})`\n            : `${errorPrefix} ${body.detail}`;\n\n            // Return normalized error object\n            return {\n            type: 'vastuugroup',\n            error: body.error || 'unknown_error',\n            message,\n            meta: {\n                product_name: body.product_name,\n                product_family_id: body.product_family_id,\n                product_plan_id: body.product_plan_id,\n            },\n            };\n        } catch {\n            // Invalid JSON in response body\n            return error;\n        }\n    },\n\n    async addPossibleHitsToMessage(error) {\n        if (!error.meta) return;\n\n        if (error.meta.hits === 'absence') {\n            const absences = await this.store.query('abcense', {\n                id: error.meta.ids.join(','),\n                sideload: true,\n            });\n            absences.forEach((item) => {\n                error.message += `\\n - ${get(item, 'abcensetype.name')} ${moment(get(item, 'startdate')).format('L')} - ${moment(get(item, 'enddate')).format('L')}`;\n            });\n        }\n\n        if (error.meta.hits === 'worktime') {\n            const worktimes = await this.store.query('worktime', {\n                id: error.meta.ids.join(','),\n                sideload: true,\n            });\n            worktimes.forEach((item) => {\n                error.message += `\\n - ${moment(get(item, 'date')).format('L')} ${get(item, 'project.name')} ${get(item, 'starttime')} - ${get(item, 'endtime')}`;\n            });\n        }\n\n        if (error.meta.hits === 'comp') {\n            const worktimes = await this.store.query('worktime', {\n                id: error.meta.ids.join(','),\n                sideload: true,\n            });\n            worktimes.forEach((item) => {\n                error.message += `\\n - ${get(item, 'project.name')} ${moment(get(item, 'date')).format('L')}`;\n            });\n        }\n    },\n});\n","import Service from '@ember/service';\nimport Evented from '@ember/object/evented';\nimport { inject as service } from '@ember/service';\n\nexport default Service.extend(Evented, {\n    lastTimeResumed: null,\n    started: null,\n    sessionhelper: service(),\n\n    init() {\n        this._super();\n        this.lastTimeResumed = new Date();\n        this.started = new Date();\n    },\n\n    storeEvent(action, type, record) {\n        this.trigger('storeEvent', { action: action, type: type, record: record });\n    },\n\n    resumed(params = {}) {\n        // if token will expire in 5 minutes, do not trigger onResumed\n        // application-controller should handle token-refresh if token is about to expire\n        // also if app is in offline-mode do not trigger onResumed\n        if (this.sessionhelper.tokenWillExpireIn(5) || this.sessionhelper.isOffline()) {\n            // eslint-disable-next-line no-console\n            console.log('evented.resumed.tokenHasExpired'); // debugging why users are being logged off from dashboard, we should see this debugging-line in sentry if dashboard doesn't trigger onResumed when token was expired\n            return;\n        } else {\n            // eslint-disable-next-line no-console\n            console.log('evented.resumed triggering onResumed'); // if token wasn't expired, we should see this debugging-line in sentry\n        }\n\n        // duration is time from last event in seconds .. first resume is calculated from initilization\n        params.duration = (new Date() - this.lastTimeResumed) / 1000;\n        this.lastTimeResumed = new Date();\n        params.ontime = (new Date() - this.started) / 1000;\n        this.trigger('onResumed', params);\n    },\n\n    getOntime() {\n        return (new Date() - this.started) / 1000;\n    },\n\n    dashboardProjectChanged(project) {\n        this.trigger('dashboardProjectChanged', { project });\n    },\n\n    // this is triggered in components/collector/form-add/component.js\n    // when onChange action is called in form-add\n    // why? because we need to know when user has changed fields in form-add\n    // ie. when user has changed project, we need to know that so we can update distance to project\n    formAddFieldChanged(fieldName, value) {\n        this.trigger('formAddFieldChanged', { fieldName, value });\n    },\n\n    // this is triggered in services/gps2.js\n    // when gps position is changed or reset\n    // why? because we need to know when users gps position has changed\n    gpsLockedPositionChanged(lockedPosition) {\n        this.trigger('gpsLockedPositionChanged', { lockedPosition });\n    },\n});\n","define(\"tt4/services/excel\", [\"exports\", \"ember-cli-data-export/services/excel\"], function (_exports, _excel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _excel.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _excel.initialize;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/export-file.coffee.old\n// Generated by CoffeeScript 2.6.1\nimport Service from '@ember/service';\n\nexport default Service.extend({\n    exportFile: function (content, filename = 'export', type = 'txt', base64 = false) {\n        var fullFileName;\n        fullFileName = filename + '.' + type;\n        if (typeof LocalFileSystem !== 'undefined' && LocalFileSystem !== null) {\n            return this._exportLocalFile(content, fullFileName, 'text/' + type);\n        } else {\n            //download file for desktop\n            return this._createExportLink(content, fullFileName, 'attachment/' + type, base64);\n        }\n    },\n    _exportLocalFile: function (content, fullFileName, mime) {\n        return window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {\n            return fileSystem.root.getFile(\n                fullFileName,\n                {\n                    create: true,\n                },\n                function (entry) {\n                    var fileEntry;\n                    fileEntry = entry;\n                    return entry.createWriter(function (writer) {\n                        //write file and open\n                        writer.onwrite = function (evt) {\n                            return cordova.plugins.fileOpener2.open(fileEntry.toURL(), mime);\n                        };\n                        return writer.write(encodeURIComponent(content));\n                    });\n                },\n            );\n        });\n    },\n    _createExportLink: function (content, fullFileName, mime, base64) {\n        var a;\n        a = document.createElement('a');\n        if (base64) {\n            a.href = 'data:' + mime + ';base64,' + encodeURIComponent(content);\n        } else {\n            a.href = 'data:' + mime + ',' + encodeURIComponent(content);\n        }\n        a.target = '_blank';\n        a.download = fullFileName;\n        document.body.appendChild(a);\n        return a.click();\n    },\n});\n","/* eslint-disable ember/named-functions-in-promises */\nimport Service, { inject as service } from '@ember/service';\nimport { set, get } from '@ember/object';\nimport formReport from '../pods/collector/report-comp/component';\nimport { getSums } from 'tt4/utils/sumrow-util';\n\n/*\nThis service transforms json to excel via ttapi2\n\nfor createExcelFromJSON(json), the JSON should be like this:\nnote: only ROWS are required\n\n{\n\"filters\":[\n        [\"project:\", \"test project\"]\n        [\"date\", \"Ke, 1.5.2019 - Ti, 10.9.2019\"]\n    ],\n\"columns\":[\n        { \"name\": \"Name\", \"key\": \"name\"},\n        { \"name\": \"Other\", \"key\": \"key_other\"}\n    ],\n\"rows\":[\n        { \"name\": \"John Doe\", \"key_other\": \"other info\"},\n        { \"name\": \"Harry Barry\", \"key_other\": \"extra info\"}\n    ],\n\"name\": \"file name .xlsx extension is optional\"\n}\n\n*/\n\nexport default Service.extend({\n    ttapi2: service(),\n    collector: service('collector-service'),\n    session: service(),\n    sessionGlobals: service(),\n    store: service(),\n    intl: service(),\n    flags: service(),\n    dialogs: service(),\n\n    createExcelJSONFromForm(form, model, columns, filters = [], sumRow = false) {\n        let excelJSON = {};\n        const formatAsNumbers = ['hours'];\n\n        let excelColumns = columns.map((column) => {\n            const ret = {\n                name: get(column, 'name.string') || get(column, 'name'),\n                key: get(column, 'ext'),\n            };\n            if (\n                formatAsNumbers.includes(column.obj.type) &&\n                this.flags.test('excel-hours-with-decimals')\n            )\n                ret.numFmt = '0.000';\n            return ret;\n        });\n\n        let rows = this.formatModelToJSON(form, model, columns);\n\n        excelJSON['filters'] = filters;\n        excelJSON['columns'] = excelColumns;\n        excelJSON['rows'] = rows;\n        if (sumRow) {\n            excelJSON['sumrow'] = sumRow;\n        }\n\n        return excelJSON;\n    },\n\n    /*\n        Give this function the form, the model, and the columns/fields on the form (@get('defaultcolumns') or similar\n        It will format this information to be displayed properly in an excel, and return it as json\n    */\n    formatModelToJSON(form, model, columns) {\n        let formattedJSON = model.map((row) => {\n            let formattedRow = {};\n            columns.forEach((column) => {\n                let ext = get(column, 'ext');\n                let obj = get(column, 'obj');\n                let cell = get(row, ext);\n                let formatted = get(this, 'collector').format(\n                    cell,\n                    obj,\n                    null,\n                    row,\n                    'serverlessexcel',\n                    form,\n                );\n\n                // do not convert numbers to strings\n                let exportFormatted = null;\n                if (typeof formatted === 'number') {\n                    exportFormatted = formatted;\n                } else if (\n                    ['row_info.created', 'row_info.modified'].includes(ext) &&\n                    row.row_info\n                ) {\n                    exportFormatted = formatted\n                        ? moment(formatted).format('YYYY-MM-DD HH:mm')\n                        : null;\n                } else {\n                    exportFormatted = get(this, 'collector').format_export(formatted);\n                }\n\n                formattedRow[ext] = exportFormatted;\n            });\n            return formattedRow;\n        });\n\n        return formattedJSON;\n    },\n\n    /*\n        Give this function some json and an optional file name, it will call ttapi2 and return a presigned s3 url for the file\n        See json examples from the top\n        Now returns promise so we can close excel-modal when exporting is done\n    */\n    async createExcelFromJSON(json, fileName = null) {\n        return this.createExportFromJSON('excel', json, fileName);\n    },\n\n    async createCsv(form, data, columns) {\n        const json = this.createExcelJSONFromForm(form, data, columns);\n        return this.createExportFromJSON('csv', json);\n    },\n\n    async createExportFromJSON(type, json, fileName = null) {\n        if (!fileName) {\n            const name = get(this, 'session.currentUser.company') || 'movenium_export';\n            json['name'] = name;\n        }\n\n        try {\n            let payload = JSON.stringify(json);\n            let url = `export?type=${type}`;\n\n            // If the payload is larger than 5MB, use compression\n            // This is a workaround for 10MB limit on APIGateway for POST requests\n            // that might be encountered when trying to export large amounts of data.\n            if (payload.length > 5 * 1024 * 1024) {\n                const compressed = await this.compressAndEncodeBase64(json);\n                payload = { data: compressed };\n                url += '&compression=true';\n            }\n\n            const res = await get(this, 'ttapi2').request(url, {\n                data: payload,\n                dataType: 'json',\n                contentType: 'application/json',\n                method: 'POST',\n            });\n\n            this.handleResponse(res);\n        } catch (error) {\n            this.handleError(error);\n        }\n    },\n\n    /**\n     * Takes a JSON object, compresses it using GZIP, and encodes it as Base64\n     * @param {Object} obj Object to be compressed and encoded\n     * @returns {string} Base64 encoded string\n     */\n    async compressAndEncodeBase64(obj) {\n        // Convert the object to a JSON string\n        const jsonString = JSON.stringify(obj);\n\n        // Convert the JSON string to a Uint8Array\n        const encoder = new TextEncoder();\n        const uint8Array = encoder.encode(jsonString);\n\n        // Create a GZIP compression stream\n        const compressionStream = new window.CompressionStream('gzip');\n\n        // Stream the uint8Array through the compression stream\n        const compressedStream = new Blob([uint8Array]).stream().pipeThrough(compressionStream);\n\n        // Collect the compressed chunks into a single Uint8Array\n        const reader = compressedStream.getReader();\n        const chunks = [];\n        let done, value;\n        while ((({ done, value } = await reader.read()), !done)) {\n            chunks.push(value);\n        }\n\n        // Concatenate all chunks into a single Uint8Array\n        const compressedArray = new Uint8Array(\n            chunks.reduce((sum, chunk) => sum + chunk.length, 0),\n        );\n        let offset = 0;\n        for (const chunk of chunks) {\n            // eslint-disable-next-line ember/use-ember-get-and-set\n            compressedArray.set(chunk, offset);\n            offset += chunk.length;\n        }\n\n        // Encode the compressed Uint8Array as Base64\n        // Process the array in chunks to avoid \"too many arguments\" error that would occur with large data\n        let binary = '';\n        const chunkSize = 8192;\n        for (let i = 0; i < compressedArray.length; i += chunkSize) {\n            binary += String.fromCharCode.apply(null, compressedArray.subarray(i, i + chunkSize));\n        }\n        const base64String = window.btoa(binary);\n\n        return base64String;\n    },\n\n    async createBase64ExcelFromJSON(json, fileName = null) {\n        if (!fileName) {\n            let name = get(this, 'session.currentUser.company') || 'movenium_export';\n            json['name'] = name;\n        }\n        try {\n            const response = await get(this, 'ttapi2').request('export?type=excel', {\n                data: JSON.stringify(json),\n                dataType: 'json',\n                contentType: 'application/json',\n                method: 'POST',\n            });\n            if (!response.url) throw new Error('Url not found from response');\n            return await this.getBase64(response);\n        } catch (e) {\n            this.handleError(e);\n        }\n    },\n\n    async getBase64(response) {\n        const resp = await fetch(response.url);\n        const blob = await resp.blob();\n        const reader = new FileReader();\n        const base64 = await new Promise((resolve) => {\n            reader.onload = () => {\n                resolve(reader.result);\n            };\n            reader.readAsDataURL(blob);\n        });\n        return base64.split(',')[1];\n    },\n\n    handleResponse(res) {\n        if (res.url) {\n            const target = window.cordova ? '_system' : undefined;\n            window.open(res.url, target);\n        }\n    },\n\n    handleError(e) {\n        this.dialogs.alert(e.message || e);\n    },\n\n    async createPdfElement(data, selected, settings, columns, params = {}, includeAllRows = false) {\n        const rows = selected.length > 0 && !includeAllRows ? selected : await data;\n        let component = this.createComponent(rows, settings);\n        if (params.statusInfo)\n            await set(\n                component,\n                'statusInfoRows',\n                await this.getStatusInfoRows(settings.form, await data),\n            );\n        set(component, 'data', data);\n        set(component, 'pdfSettings', params);\n        let formattedSumrow = getSums(\n            rows,\n            columns,\n            settings.form,\n            this.collector,\n            'sumrow',\n        ).firstObject;\n        set(component, 'pdf_formatted_sumRow', formattedSumrow);\n        return await get(component, 'asPdfElement');\n    },\n\n    async createPdfFull(form, selected, filters, showColumns, params = {}, format = null) {\n        let type = form === 'diary' ? 'diary' : 'row';\n        // This is used to create a new stylish pdf with headers on side\n        if (params.layoutOption === 'sideHeaders') type = 'horizontal';\n\n        let url = 'pdf/' + type;\n\n        let postParams = {\n            form: form,\n            lang: moment.locale(),\n            filters: JSON.stringify(filters),\n        };\n\n        if (selected.length !== 0) {\n            postParams.id = selected.mapBy('id').join(',');\n        }\n\n        if (showColumns) {\n            postParams.showColumns = showColumns;\n        }\n\n        if (params.template) {\n            postParams.template = get(params, 'template.id');\n        }\n\n        if (params.signature) {\n            postParams.signature = params.signature;\n        }\n\n        if (params.dateAndPlace) {\n            postParams.dateAndPlace = params.dateAndPlace;\n        }\n\n        if (format) {\n            postParams.type = format;\n        }\n\n        let request = await this.collector.ttapi({\n            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        return this.variation(name, false);\n    },\n\n    /* LaunchDarkly stuff from here */\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\",\"CAPI3\":\"https://capi-3.moveniumtest.com\",\"MAIN_TTAPI\":\"https://api.moveniumtest.com/ttapi\",\"BILLING_URL\":\"https://552f38y3w8.execute-api.eu-west-1.amazonaws.com/next\",\"STRIPE_KEY\":\"pk_test_iDMc9tBVL9G38M9CPfjD3IQv\",\"COLLECTOR_API_URL\":\"https://api.moveniumtest.com\",\"BEACONBACKENDURL\":\"https://7e4atcva26.execute-api.eu-west-1.amazonaws.com/prod\",\"ONLY_CC_URL\":\"https://cc-beta.moveniumprod.com\",\"CC_URL\":\"https://cc-beta.moveniumprod.com/trigger\",\"CC_TVEMP\":\"/tvemployer\",\"CC_TVREP\":\"/tvreport\",\"CC_URL_TVPER\":\"https://cc-beta.moveniumprod.com/trigger/tvperson\",\"CC_URL_TVCARD\":\"https://cc-beta.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-beta.moveniumprod.com/trigger/foreca\",\"WEATHER_HISTORY_API\":\"https://cc-beta.moveniumprod.com/trigger/foreca-history\",\"CDN_URL\":\"https://cdn.moveniumtest.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\":\"https://api.moveniumtest.com/ttapi/vismasso/nextotta\",\"PRODUCT_UPDATES_URL\":\"https://hooks.zapier.com/hooks/catch/213559/fom51r\",\"STONLY_WID\":\"1e6aaf2b-fa22-11ed-871a-0a52ff1ec764\",\"ZENDESK_KEY\":\"44ad6b50-e954-4146-be77-d420069e2084\",\"name\":\"tt4\",\"version\":\"1.1.56+b5872080\",\"BUILD_TIMESTAMP\":\"2026-05-13T08:53:05.357Z\"});\n          }\n        \n"]}